internal void AddHelper(DS_REPL_KCC_DSA_FAILURES failures, IntPtr info) { int num = failures.cNumEntries; for (int i = 0; i < num; i++) { IntPtr intPtr = (IntPtr)((long)info + (long)(Marshal.SizeOf(typeof(int)) * 2) + (long)(i * Marshal.SizeOf(typeof(DS_REPL_KCC_DSA_FAILURE)))); ReplicationFailure replicationFailure = new ReplicationFailure(intPtr, this.server, this.nameTable); if (replicationFailure.LastErrorCode == 0) { replicationFailure.lastResult = ExceptionHelper.ERROR_DS_UNKNOWN_ERROR; } this.Add(replicationFailure); } }
internal void AddHelper(DS_REPL_KCC_DSA_FAILURES failures, IntPtr info) { int cNumEntries = failures.cNumEntries; IntPtr zero = IntPtr.Zero; for (int i = 0; i < cNumEntries; i++) { zero = (IntPtr) ((((long) info) + (Marshal.SizeOf(typeof(int)) * 2)) + (i * Marshal.SizeOf(typeof(DS_REPL_KCC_DSA_FAILURE)))); ReplicationFailure failure = new ReplicationFailure(zero, this.server, this.nameTable); if (failure.LastErrorCode == 0) { failure.lastResult = ExceptionHelper.ERROR_DS_UNKNOWN_ERROR; } this.Add(failure); } }
internal void AddHelper(DS_REPL_KCC_DSA_FAILURES failures, IntPtr info) { int num = failures.cNumEntries; for (int i = 0; i < num; i++) { IntPtr intPtr = (IntPtr)((long)info + (long)(Marshal.SizeOf(typeof(int)) * 2) + (long)(i * Marshal.SizeOf(typeof(DS_REPL_KCC_DSA_FAILURE)))); ReplicationFailure replicationFailure = new ReplicationFailure(intPtr, this.server, this.nameTable); if (replicationFailure.LastErrorCode == 0) { replicationFailure.lastResult = ExceptionHelper.ERROR_DS_UNKNOWN_ERROR; } this.Add(replicationFailure); } }
internal void AddHelper(DS_REPL_KCC_DSA_FAILURES failures, IntPtr info) { int cNumEntries = failures.cNumEntries; IntPtr zero = IntPtr.Zero; for (int i = 0; i < cNumEntries; i++) { zero = (IntPtr)((((long)info) + (Marshal.SizeOf(typeof(int)) * 2)) + (i * Marshal.SizeOf(typeof(DS_REPL_KCC_DSA_FAILURE)))); ReplicationFailure failure = new ReplicationFailure(zero, this.server, this.nameTable); if (failure.LastErrorCode == 0) { failure.lastResult = ExceptionHelper.ERROR_DS_UNKNOWN_ERROR; } this.Add(failure); } }
internal ReplicationFailureCollection ConstructFailures(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationFailureCollection failures = new ReplicationFailureCollection(server); try { if (info != IntPtr.Zero) { DS_REPL_KCC_DSA_FAILURES structure = new DS_REPL_KCC_DSA_FAILURES(); Marshal.PtrToStructure(info, structure); if (structure.cNumEntries > 0) { failures.AddHelper(structure, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_KCC_DSA_CONNECT_FAILURES, info, libHandle); } return failures; }
internal ReplicationFailureCollection ConstructFailures(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationFailureCollection failures = new ReplicationFailureCollection(server); try { if (info != IntPtr.Zero) { DS_REPL_KCC_DSA_FAILURES structure = new DS_REPL_KCC_DSA_FAILURES(); Marshal.PtrToStructure(info, structure); if (structure.cNumEntries > 0) { failures.AddHelper(structure, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_KCC_DSA_CONNECT_FAILURES, info, libHandle); } return(failures); }
internal void AddHelper(DS_REPL_KCC_DSA_FAILURES failures, IntPtr info) { // get the count int count = failures.cNumEntries; IntPtr addr = (IntPtr)0; for (int i = 0; i < count; i++) { addr = IntPtr.Add(info, sizeof(int) * 2 + i * Marshal.SizeOf(typeof(DS_REPL_KCC_DSA_FAILURE))); ReplicationFailure managedFailure = new ReplicationFailure(addr, _server, _nameTable); // in certain scenario, KCC returns some failure records that we need to process it first before returning if (managedFailure.LastErrorCode == 0) { // we change the error code to some generic one managedFailure.lastResult = ExceptionHelper.ERROR_DS_UNKNOWN_ERROR; } Add(managedFailure); } }
internal ReplicationFailureCollection ConstructFailures(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationFailureCollection replicationFailureCollection = new ReplicationFailureCollection(server); try { if (info != (IntPtr)0) { DS_REPL_KCC_DSA_FAILURES dSREPLKCCDSAFAILURE = new DS_REPL_KCC_DSA_FAILURES(); Marshal.PtrToStructure(info, dSREPLKCCDSAFAILURE); int num = dSREPLKCCDSAFAILURE.cNumEntries; if (num > 0) { replicationFailureCollection.AddHelper(dSREPLKCCDSAFAILURE, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_KCC_DSA_CONNECT_FAILURES, info, libHandle); } return(replicationFailureCollection); }
internal ReplicationFailureCollection ConstructFailures(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationFailureCollection collection = new ReplicationFailureCollection(server); int count = 0; try { if (info != (IntPtr)0) { DS_REPL_KCC_DSA_FAILURES failures = new DS_REPL_KCC_DSA_FAILURES(); Marshal.PtrToStructure(info, failures); count = failures.cNumEntries; if (count > 0) { collection.AddHelper(failures, info); } } } finally { FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_KCC_DSA_CONNECT_FAILURES, info, libHandle); } return(collection); }
internal ReplicationFailureCollection ConstructFailures(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationFailureCollection collection = new ReplicationFailureCollection(server); int count = 0; try { if (info != (IntPtr)0) { DS_REPL_KCC_DSA_FAILURES failures = new DS_REPL_KCC_DSA_FAILURES(); Marshal.PtrToStructure(info, failures); count = failures.cNumEntries; if (count > 0) collection.AddHelper(failures, info); } } finally { FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_KCC_DSA_CONNECT_FAILURES, info, libHandle); } return collection; }
internal ReplicationFailureCollection ConstructFailures(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationFailureCollection replicationFailureCollection = new ReplicationFailureCollection(server); try { if (info != (IntPtr)0) { DS_REPL_KCC_DSA_FAILURES dSREPLKCCDSAFAILURE = new DS_REPL_KCC_DSA_FAILURES(); Marshal.PtrToStructure(info, dSREPLKCCDSAFAILURE); int num = dSREPLKCCDSAFAILURE.cNumEntries; if (num > 0) { replicationFailureCollection.AddHelper(dSREPLKCCDSAFAILURE, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_KCC_DSA_CONNECT_FAILURES, info, libHandle); } return replicationFailureCollection; }