NetGetDCName (netapi32)
Last changed: -213.207.151.22

.
Summary
The NetGetDCName function returns the name of the primary domain controller (PDC). It does not return the name of the backup domain controller (BDC) for the specified domain. Also, you cannot remote this function to a non-PDC server.

C# Signature:

[DllImport("Netapi32.dll")]
static extern NetApiStatus NetApiBufferFree(IntPtr Buffer);

[DllImport("Netapi32.dll", CharSet=CharSet.Unicode)]
static extern NetApiStatus NetGetDCName(string serverName, string domainName, out IntPtr buffer);

VB Signature:

(TODO)

User-Defined Types:

public enum NetApiStatus
{
    Success = 0,
    DCNotFound = 2453
}  

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

public static string GetDCName()
{
    IntPtr domainInfo = IntPtr.Zero;
    string dcName = String.Empty;

    try
    {
        NetApiStatus result = NetGetDCName(null, null, out domainInfo);
        if (result == NetApiStatus.Success)
        {
            dcName = Marshal.PtrToStringAuto(domainInfo);
        }
    }
    finally
    {
        NetApiBufferFree(domainInfo);
    }

    return dcName;

}

Documentation