internal static UnsafeNativeMethods.DomainControllerInfo GetDcName(string computerName, string domainName, string siteName, int flags) { IntPtr domainControllerInfoPtr = IntPtr.Zero; try { int err = UnsafeNativeMethods.DsGetDcName(computerName, domainName, IntPtr.Zero, siteName, flags, out domainControllerInfoPtr); if (err != 0) { GlobalDebug.WriteLineIf(GlobalDebug.Error, "Utils", "GetDcName: DsGetDcName failed, err=" + err); throw new PrincipalOperationException( String.Format( CultureInfo.CurrentCulture, StringResources.UnableToRetrieveDomainInfo, err)); } UnsafeNativeMethods.DomainControllerInfo domainControllerInfo = (UnsafeNativeMethods.DomainControllerInfo)Marshal.PtrToStructure(domainControllerInfoPtr, typeof(UnsafeNativeMethods.DomainControllerInfo)); return(domainControllerInfo); } finally { if (domainControllerInfoPtr != IntPtr.Zero) { UnsafeNativeMethods.NetApiBufferFree(domainControllerInfoPtr); } } }
internal static UnsafeNativeMethods.DomainControllerInfo GetDcName(string computerName, string domainName, string siteName, int flags) { UnsafeNativeMethods.DomainControllerInfo domainControllerInfo; IntPtr zero = IntPtr.Zero; try { int num = UnsafeNativeMethods.DsGetDcName(computerName, domainName, IntPtr.Zero, siteName, flags, out zero); if (num == 0) { UnsafeNativeMethods.DomainControllerInfo structure = (UnsafeNativeMethods.DomainControllerInfo)Marshal.PtrToStructure(zero, typeof(UnsafeNativeMethods.DomainControllerInfo)); domainControllerInfo = structure; } else { object[] objArray = new object[1]; objArray[0] = num; throw new PrincipalOperationException(string.Format(CultureInfo.CurrentCulture, StringResources.UnableToRetrieveDomainInfo, objArray)); } } finally { if (zero != IntPtr.Zero) { UnsafeNativeMethods.NetApiBufferFree(zero); } } return(domainControllerInfo); }