internal static pInvokes.SafeNativeMethods.DOMAIN_CONTROLLER_INFO GetDomainInfo(string domain) { pInvokes.SafeNativeMethods.DOMAIN_CONTROLLER_INFO domainInfo = new pInvokes.SafeNativeMethods.DOMAIN_CONTROLLER_INFO(); IntPtr pDCI = IntPtr.Zero; int ret = pInvokes.SafeNativeMethods.DsGetDcName(null, domain, 0, "", 0, out pDCI); if (ret == 0) { domainInfo = (pInvokes.SafeNativeMethods.DOMAIN_CONTROLLER_INFO)Marshal.PtrToStructure(pDCI, typeof(pInvokes.SafeNativeMethods.DOMAIN_CONTROLLER_INFO)); } else { LibraryLogging.Error("GetDomainInfo({0}) Error:{1} {2}", domain, ret, LastError(ret)); } if (pDCI != IntPtr.Zero) { pInvokes.SafeNativeMethods.NetApiBufferFree(pDCI); } return domainInfo; }