/// <summary>
/// The NetDfsSetInfo function sets or modifies the information associated with a Distributed File System (Dfs) link in the named Dfs root, or with the Dfs root itself. The function can set information relevant to a specific root, root target, link, or link target.
/// </summary>
/// <param name="DfsEntryPath">[in] Pointer to a string that specifies the Universal Naming Convention path of a Dfs link or a Dfs root. </param>
/// <param name="ServerName">[in, optional] Pointer to a string that specifies the name of the host server that the Dfs link references.</param>
/// <param name="ShareName">[in, optional] Pointer to a string that specifies the name of the shared folder or the path to a folder within a shared folder on the host server that the Dfs link references. </param>
/// <param name="Level">[in] Specifies the information level of the data. This parameter can be one of the following values. </param>
/// <param name="Buffer">[in] Pointer to a buffer that specifies the data. The format of this data depends on the value of the Level parameter.</param>
/// <returns></returns>
[DllImport("Netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern int NetDfsSetInfo(
[MarshalAs(UnmanagedType.LPWStr)] string DfsEntryPath,
[MarshalAs(UnmanagedType.LPWStr)] string ServerName,
[MarshalAs(UnmanagedType.LPWStr)] string ShareName,
[MarshalAs(UnmanagedType.SysUInt)] int Level,
out IntPtr Buffer
);
Declare Function NetDfsSetInfo Lib "netapi32.dll" (TODO) As TODO
None.
Do you know one? Please contribute it!
None.
Please add some!
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
private struct DFS_INFO_100 {
[MarshalAs(UnmanagedType.LPWStr)] public string Comment;
}
static public void SetComment(string dfsPath, string comment) {
DFS_INFO_100 info;
info.Comment = comment;
IntPtr commentBuffer = IntPtr.Zero;
try {
commentBuffer = Marshal.AllocHGlobal(Marshal.SizeOf(info));
Marshal.StructureToPtr(info, commentBuffer, false);
int result = NetDfsSetInfo(dfsPath, null, null, 100, commentBuffer);
if (result != 0) {
throw new Win32Exception(result);
}
} finally {
Marshal.FreeHGlobal(commentBuffer);
}
}