NetDfsSetInfo (netapi32)
Last changed: -203.59.191.53

.
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.

C# Signature:

    /// <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
    );

VB Signature:

Declare Function NetDfsSetInfo Lib "netapi32.dll" (TODO) As TODO

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    [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);
        }
    }

Documentation