[DllImport("Netapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
public static extern int NetDfsGetInfo(
[MarshalAs(UnmanagedType.LPWStr)] string DfsEntryPath, // DFS entry path for the volume
[MarshalAs(UnmanagedType.LPWStr)] string ServerName, // This parameter is currently ignored and should be NULL
[MarshalAs(UnmanagedType.LPWStr)] string ShareName, // This parameter is currently ignored and should be NULL.
int Level, // Level of information requested
out IntPtr Buffer // API allocates and returns buffer with requested info
);
Declare Function NetDfsGetInfo Lib "netapi32.dll" (TODO) As TODO
None.
None.
Remember to free buffer, see NetApiBufferFree
static void Main(string[] args)
{
IntPtr buf;
if (args[0] != "")
{
int res=NetDfsGetInfo(args[0], null, null, 4, out buf);
if (res == 0)
{
try
{
DFS_INFO_4 info = (DFS_INFO_4)Marshal.PtrToStructure(buf, typeof(DFS_INFO_4));
Console.WriteLine("{0}, {1}, {2} ", info.EntryPath, info.Comment, info.NumberOfStorages);
for (int i = 0; i < info.NumberOfStorages; i++)
{
IntPtr pStorage = new IntPtr(info.Storage.ToInt64() + i * Marshal.SizeOf(typeof(DFS_STORAGE_INFO)));
DFS_STORAGE_INFO storage = (DFS_STORAGE_INFO)Marshal.PtrToStructure(pStorage, typeof(DFS_STORAGE_INFO));
Console.WriteLine(" {0}, {1}, {2} ", storage.ServerName, storage.ShareName, storage.State);
}
}
finally
{
NetApiBufferFree(buf);
}
}
}
}
Do you know one? Please contribute it!