예제 #1
0
        public NspiStatus UpdateStat()
        {
            this.MarshalStatToNative();
            NspiStatus result = this.client.UpdateStat(this.statHandle.DangerousGetHandle());

            this.MarshalNativeToStat();
            return(result);
        }
예제 #2
0
        public NspiStatus CompareMids(int mid1, int mid2, out int result)
        {
            this.MarshalStatToNative();
            NspiStatus result2 = this.client.CompareMids(this.statHandle.DangerousGetHandle(), mid1, mid2, out result);

            this.MarshalNativeToStat();
            return(result2);
        }
예제 #3
0
        public NspiStatus QueryColumns(NspiQueryColumnsFlags flags, out PropTag[] propTags)
        {
            int[]      propTagsAsInts;
            NspiStatus result = this.client.QueryColumns((int)flags, out propTagsAsInts);

            propTags = NspiClient.GetPropTagArrayFromIntArray(propTagsAsInts);
            return(result);
        }
예제 #4
0
        public NspiStatus GetTemplateInfo(NspiGetTemplateInfoFlags flags, int type, string dn, int codePage, int localeId, out PropRow row)
        {
            SafeRpcMemoryHandle rowHandle;
            NspiStatus          templateInfo = this.client.GetTemplateInfo(flags, type, dn, codePage, localeId, out rowHandle);

            row = NspiClient.GetRowAndDisposeHandle(rowHandle);
            return(templateInfo);
        }
예제 #5
0
        public NspiStatus ResortRestriction(int[] mids, out int[] returnedMids)
        {
            this.MarshalStatToNative();
            NspiStatus result = this.client.ResortRestriction(this.statHandle.DangerousGetHandle(), mids, out returnedMids);

            this.MarshalNativeToStat();
            return(result);
        }
예제 #6
0
        public NspiStatus GetHierarchyInfo(NspiGetHierarchyInfoFlags flags, ref uint version, out PropRowSet rowset)
        {
            this.MarshalStatToNative();
            SafeRpcMemoryHandle rowsetHandle;
            NspiStatus          hierarchyInfo = this.client.GetHierarchyInfo(flags, this.statHandle.DangerousGetHandle(), ref version, out rowsetHandle);

            this.MarshalNativeToStat();
            rowset = NspiClient.GetRowSetAndDisposeHandle(rowsetHandle);
            return(hierarchyInfo);
        }
예제 #7
0
 internal void Append(string operation, NspiStatus status, int queuedTime, int processingTime)
 {
     if (ProtocolLog.Enabled)
     {
         this.Append(operation, (status == NspiStatus.Success || status == NspiStatus.UnbindSuccess) ? null : string.Format(NumberFormatInfo.InvariantInfo, "{0:X}", new object[]
         {
             (int)status
         }), queuedTime, processingTime);
     }
 }
예제 #8
0
        public NspiStatus GetPropList(NspiGetPropListFlags flags, int mid, int codePage, out PropTag[] props)
        {
            this.MarshalStatToNative();
            int[]      propTagsAsInts;
            NspiStatus propList = this.client.GetPropList(flags, mid, codePage, out propTagsAsInts);

            this.MarshalNativeToStat();
            props = NspiClient.GetPropTagArrayFromIntArray(propTagsAsInts);
            return(propList);
        }
예제 #9
0
        public NspiStatus QueryRows(NspiQueryRowsFlags flags, int[] mids, int count, IList <PropTag> propTags, out PropRowSet rowset)
        {
            int[] intArrayFromPropTagArray = NspiClient.GetIntArrayFromPropTagArray(propTags);
            this.MarshalStatToNative();
            SafeRpcMemoryHandle rowsetHandle;
            NspiStatus          result = this.client.QueryRows(flags, this.statHandle.DangerousGetHandle(), mids, count, intArrayFromPropTagArray, out rowsetHandle);

            this.MarshalNativeToStat();
            rowset = NspiClient.GetRowSetAndDisposeHandle(rowsetHandle);
            return(result);
        }
예제 #10
0
        public NspiStatus GetProps(NspiGetPropsFlags flags, IList <PropTag> propTags, out PropRow row)
        {
            int[] intArrayFromPropTagArray = NspiClient.GetIntArrayFromPropTagArray(propTags);
            this.MarshalStatToNative();
            SafeRpcMemoryHandle rowHandle;
            NspiStatus          props = this.client.GetProps(flags, this.statHandle.DangerousGetHandle(), intArrayFromPropTagArray, out rowHandle);

            this.MarshalNativeToStat();
            row = NspiClient.GetRowAndDisposeHandle(rowHandle);
            return(props);
        }
예제 #11
0
        public NspiStatus Bind(NspiBindFlags flags)
        {
            NspiStatus result;

            using (SafeRpcMemoryHandle safeRpcMemoryHandle = new SafeRpcMemoryHandle(16))
            {
                this.MarshalStatToNative();
                NspiStatus nspiStatus = this.client.Bind(flags, this.statHandle.DangerousGetHandle(), safeRpcMemoryHandle.DangerousGetHandle());
                this.MarshalNativeToStat();
                byte[] array = new byte[16];
                Marshal.Copy(safeRpcMemoryHandle.DangerousGetHandle(), array, 0, array.Length);
                this.serverGuid   = new Guid(array);
                this.needToUnbind = (nspiStatus == NspiStatus.Success);
                result            = nspiStatus;
            }
            return(result);
        }
예제 #12
0
        public NspiStatus ModProps(IList <PropTag> propTags, PropRow row)
        {
            int[]      intArrayFromPropTagArray = NspiClient.GetIntArrayFromPropTagArray(propTags);
            NspiStatus result;

            using (SafeRpcMemoryHandle safeRpcMemoryHandle = new SafeRpcMemoryHandle(row.GetBytesToMarshal()))
            {
                SafeRpcMemoryHandle safeRpcMemoryHandle2 = NspiMarshal.MarshalPropValueCollection(row.Properties);
                row.MarshalledPropertiesHandle = safeRpcMemoryHandle2;
                safeRpcMemoryHandle.AddAssociatedHandle(safeRpcMemoryHandle2);
                row.MarshalToNative(safeRpcMemoryHandle);
                this.MarshalStatToNative();
                NspiStatus nspiStatus = this.client.ModProps(this.statHandle.DangerousGetHandle(), intArrayFromPropTagArray, safeRpcMemoryHandle.DangerousGetHandle());
                this.MarshalNativeToStat();
                result = nspiStatus;
            }
            return(result);
        }
예제 #13
0
        public NspiStatus SeekEntries(PropValue propValue, int[] mids, IList <PropTag> propTags, out PropRowSet rowset)
        {
            int[]             intArrayFromPropTagArray = NspiClient.GetIntArrayFromPropTagArray(propTags);
            IList <PropValue> list = new List <PropValue>();

            list.Add(propValue);
            NspiStatus result;

            using (SafeRpcMemoryHandle safeRpcMemoryHandle = new SafeRpcMemoryHandle(propValue.GetBytesToMarshal()))
            {
                PropValue.MarshalToNative(list, safeRpcMemoryHandle);
                this.MarshalStatToNative();
                SafeRpcMemoryHandle rowsetHandle;
                NspiStatus          nspiStatus = this.client.SeekEntries(this.statHandle.DangerousGetHandle(), safeRpcMemoryHandle.DangerousGetHandle(), mids, intArrayFromPropTagArray, out rowsetHandle);
                this.MarshalNativeToStat();
                rowset = NspiClient.GetRowSetAndDisposeHandle(rowsetHandle);
                result = nspiStatus;
            }
            return(result);
        }
예제 #14
0
        public NspiStatus GetMatches(Restriction restriction, object propName, int maxRows, IList <PropTag> propTags, out int[] mids, out PropRowSet rowset)
        {
            NspiStatus result;

            using (SafeRpcMemoryHandle safeRpcMemoryHandle = new SafeRpcMemoryHandle())
            {
                if (restriction != null)
                {
                    safeRpcMemoryHandle.Allocate(restriction.GetBytesToMarshalNspi());
                    restriction.MarshalToNativeNspi(safeRpcMemoryHandle);
                }
                int[] intArrayFromPropTagArray = NspiClient.GetIntArrayFromPropTagArray(propTags);
                this.MarshalStatToNative();
                SafeRpcMemoryHandle rowsetHandle;
                NspiStatus          matches = this.client.GetMatches(this.statHandle.DangerousGetHandle(), safeRpcMemoryHandle.DangerousGetHandle(), IntPtr.Zero, maxRows, intArrayFromPropTagArray, out mids, out rowsetHandle);
                this.MarshalNativeToStat();
                rowset = NspiClient.GetRowSetAndDisposeHandle(rowsetHandle);
                result = matches;
            }
            return(result);
        }
        // Token: 0x060001B0 RID: 432 RVA: 0x000092E8 File Offset: 0x000074E8
        public NspiStatus Connect()
        {
            NspiConnection.NspiConnectionTracer.TraceDebug <string>(0L, "NspiConnection.Connect: owningPool.Server={0}", this.owningPool.Server ?? "(null)");
            NspiClient nspiClient = null;

            for (int i = 0; i < 3; i++)
            {
                try
                {
                    if (i != 0)
                    {
                        Thread.Sleep(NspiConnection.RetryInterval);
                    }
                    nspiClient = new NspiClient(this.owningPool.Server);
                    NspiStatus nspiStatus = nspiClient.Bind(NspiBindFlags.None);
                    if (nspiStatus == NspiStatus.Success)
                    {
                        NspiConnection.NspiConnectionTracer.TraceDebug <string>(0L, "Bind to {0} succeeded", this.owningPool.Server ?? "(null)");
                        this.client = nspiClient;
                        nspiClient  = null;
                        return(NspiStatus.Success);
                    }
                    NspiConnection.NspiConnectionTracer.TraceDebug <string, NspiStatus>(0L, "Bind to {0} failed with status {1}", this.owningPool.Server ?? "(null)", nspiStatus);
                }
                catch (RpcException innerException)
                {
                    throw new ADTransientException(DirectoryStrings.ExceptionServerUnavailable(this.owningPool.Server), innerException);
                }
                finally
                {
                    if (nspiClient != null)
                    {
                        nspiClient.Dispose();
                        nspiClient = null;
                    }
                }
            }
            NspiConnection.NspiConnectionTracer.TraceDebug <int, string>(0L, "All {0} attempts to connect to {1} failed", 3, this.owningPool.Server ?? "(null)");
            return(NspiStatus.GeneralFailure);
        }
예제 #16
0
        public NspiStatus ResolveNames(byte[][] names, IList <PropTag> propTags, out ResolveResult[] results, out PropRowSet rowset)
        {
            int[] intArrayFromPropTagArray = NspiClient.GetIntArrayFromPropTagArray(propTags);
            this.MarshalStatToNative();
            int[] array;
            SafeRpcMemoryHandle rowsetHandle;
            NspiStatus          result = this.client.ResolveNames(this.statHandle.DangerousGetHandle(), intArrayFromPropTagArray, names, out array, out rowsetHandle);

            this.MarshalNativeToStat();
            rowset = NspiClient.GetRowSetAndDisposeHandle(rowsetHandle);
            if (array != null)
            {
                results = new ResolveResult[array.Length];
                for (int i = 0; i < array.Length; i++)
                {
                    results[i] = (ResolveResult)array[i];
                }
            }
            else
            {
                results = null;
            }
            return(result);
        }
예제 #17
0
 internal NspiException(NspiStatus status, string message) : base(message)
 {
     base.HResult = (int)status;
 }
        // Token: 0x060001A7 RID: 423 RVA: 0x00009234 File Offset: 0x00007434
        private NspiStatus EndWrapper(string methodName, ICancelableAsyncResult asyncResult, bool rundownContextOnFailure, Func <NspiDispatchTask, NspiStatus> endDelegate)
        {
            int        contextHandle = 0;
            NspiStatus nspiStatus    = NspiStatus.Success;

            NspiAsyncDispatch.ConditionalExceptionWrapper(ExTraceGlobals.NspiTracer.IsTraceEnabled(TraceType.DebugTrace), delegate
            {
                bool flag = false;
                try
                {
                    DispatchTaskAsyncResult dispatchTaskAsyncResult = asyncResult as DispatchTaskAsyncResult;
                    if (dispatchTaskAsyncResult != null)
                    {
                        NspiDispatchTask nspiDispatchTask = (NspiDispatchTask)dispatchTaskAsyncResult.DispatchTask;
                        contextHandle = nspiDispatchTask.ContextHandle;
                        using (DisposeGuard disposeGuard = default(DisposeGuard))
                        {
                            disposeGuard.Add <NspiDispatchTask>(nspiDispatchTask);
                            try
                            {
                                nspiStatus = endDelegate(nspiDispatchTask);
                            }
                            finally
                            {
                                if (nspiDispatchTask.IsContextRundown && contextHandle != 0)
                                {
                                    this.ContextHandleRundown(new IntPtr(contextHandle));
                                    contextHandle = 0;
                                }
                            }
                        }
                        ExTraceGlobals.NspiTracer.TraceDebug <string, int, NspiStatus>(0, 0L, "{0} succeeded. ContextHandle={1} NspiStatus={2}.", methodName, contextHandle, nspiStatus);
                        flag = true;
                    }
                    else
                    {
                        FailureAsyncResult <NspiStatus> failureAsyncResult = asyncResult as FailureAsyncResult <NspiStatus>;
                        if (failureAsyncResult == null)
                        {
                            throw new InvalidOperationException(string.Format("Invalid IAsyncResult encountered; {0}", asyncResult));
                        }
                        nspiStatus = failureAsyncResult.ErrorCode;
                        ExTraceGlobals.NspiTracer.TraceDebug(0, 0L, "{0} failed. ContextHandle={1} NspiStatus={2}. Exception={3}.", new object[]
                        {
                            methodName,
                            failureAsyncResult.ContextHandle.ToInt32(),
                            nspiStatus,
                            failureAsyncResult.Exception
                        });
                    }
                }
                finally
                {
                    if (!flag && rundownContextOnFailure && contextHandle != 0)
                    {
                        this.ContextHandleRundown(new IntPtr(contextHandle));
                    }
                }
            }, delegate(Exception exception)
            {
                ExTraceGlobals.NspiTracer.TraceDebug <string, int, Exception>(0, 0L, "{0} failed. ContextHandle={1}, Exception={2}.", methodName, contextHandle, exception);
            });
            return(nspiStatus);
        }