internal ReplicationNeighborCollection ConstructNeighbors(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationNeighborCollection collection = new ReplicationNeighborCollection(server); int count = 0; try { if (info != (IntPtr)0) { DS_REPL_NEIGHBORS neighbors = new DS_REPL_NEIGHBORS(); Marshal.PtrToStructure(info, neighbors); Debug.Assert(neighbors != null); count = neighbors.cNumNeighbors; if (count > 0) { collection.AddHelper(neighbors, info); } } } finally { FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_NEIGHBORS, info, libHandle); } return(collection); }
internal void AddHelper(DS_REPL_NEIGHBORS neighbors, IntPtr info) { int num = neighbors.cNumNeighbors; 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_NEIGHBOR)))); ReplicationNeighbor replicationNeighbor = new ReplicationNeighbor(intPtr, this.server, this.nameTable); this.Add(replicationNeighbor); } }
internal void AddHelper(DS_REPL_NEIGHBORS neighbors, IntPtr info) { int cNumNeighbors = neighbors.cNumNeighbors; IntPtr zero = IntPtr.Zero; for (int i = 0; i < cNumNeighbors; i++) { zero = (IntPtr) ((((long) info) + (Marshal.SizeOf(typeof(int)) * 2)) + (i * Marshal.SizeOf(typeof(DS_REPL_NEIGHBOR)))); ReplicationNeighbor neighbor = new ReplicationNeighbor(zero, this.server, this.nameTable); this.Add(neighbor); } }
internal void AddHelper(DS_REPL_NEIGHBORS neighbors, IntPtr info) { int cNumNeighbors = neighbors.cNumNeighbors; IntPtr zero = IntPtr.Zero; for (int i = 0; i < cNumNeighbors; i++) { zero = (IntPtr)((((long)info) + (Marshal.SizeOf(typeof(int)) * 2)) + (i * Marshal.SizeOf(typeof(DS_REPL_NEIGHBOR)))); ReplicationNeighbor neighbor = new ReplicationNeighbor(zero, this.server, this.nameTable); this.Add(neighbor); } }
internal void AddHelper(DS_REPL_NEIGHBORS neighbors, IntPtr info) { // get the count int count = neighbors.cNumNeighbors; IntPtr addr = (IntPtr)0; for (int i = 0; i < count; i++) { addr = IntPtr.Add(info, Marshal.SizeOf(typeof(int)) * 2 + i * Marshal.SizeOf(typeof(DS_REPL_NEIGHBOR))); ReplicationNeighbor managedNeighbor = new ReplicationNeighbor(addr, _server, _nameTable); Add(managedNeighbor); } }
internal ReplicationNeighborCollection ConstructNeighbors(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationNeighborCollection neighbors = new ReplicationNeighborCollection(server); try { if (info != IntPtr.Zero) { DS_REPL_NEIGHBORS structure = new DS_REPL_NEIGHBORS(); Marshal.PtrToStructure(info, structure); if (structure.cNumNeighbors > 0) { neighbors.AddHelper(structure, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_NEIGHBORS, info, libHandle); } return(neighbors); }
internal ReplicationNeighborCollection ConstructNeighbors(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationNeighborCollection replicationNeighborCollection = new ReplicationNeighborCollection(server); try { if (info != (IntPtr)0) { DS_REPL_NEIGHBORS dSREPLNEIGHBOR = new DS_REPL_NEIGHBORS(); Marshal.PtrToStructure(info, dSREPLNEIGHBOR); int num = dSREPLNEIGHBOR.cNumNeighbors; if (num > 0) { replicationNeighborCollection.AddHelper(dSREPLNEIGHBOR, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_NEIGHBORS, info, libHandle); } return(replicationNeighborCollection); }
internal ReplicationNeighborCollection ConstructNeighbors(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationNeighborCollection collection = new ReplicationNeighborCollection(server); int count = 0; try { if (info != (IntPtr)0) { DS_REPL_NEIGHBORS neighbors = new DS_REPL_NEIGHBORS(); Marshal.PtrToStructure(info, neighbors); Debug.Assert(neighbors != null); count = neighbors.cNumNeighbors; if (count > 0) collection.AddHelper(neighbors, info); } } finally { FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_NEIGHBORS, info, libHandle); } return collection; }
internal ReplicationNeighborCollection ConstructNeighbors(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationNeighborCollection replicationNeighborCollection = new ReplicationNeighborCollection(server); try { if (info != (IntPtr)0) { DS_REPL_NEIGHBORS dSREPLNEIGHBOR = new DS_REPL_NEIGHBORS(); Marshal.PtrToStructure(info, dSREPLNEIGHBOR); int num = dSREPLNEIGHBOR.cNumNeighbors; if (num > 0) { replicationNeighborCollection.AddHelper(dSREPLNEIGHBOR, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_NEIGHBORS, info, libHandle); } return replicationNeighborCollection; }
internal ReplicationNeighborCollection ConstructNeighbors(IntPtr info, DirectoryServer server, LoadLibrarySafeHandle libHandle) { ReplicationNeighborCollection neighbors = new ReplicationNeighborCollection(server); try { if (info != IntPtr.Zero) { DS_REPL_NEIGHBORS structure = new DS_REPL_NEIGHBORS(); Marshal.PtrToStructure(info, structure); if (structure.cNumNeighbors > 0) { neighbors.AddHelper(structure, info); } } } finally { this.FreeReplicaInfo(DS_REPL_INFO_TYPE.DS_REPL_INFO_NEIGHBORS, info, libHandle); } return neighbors; }