示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
        }