#include "idl_types.h" [ uuid("38578646-4566-4564-2244-275796345667"), version(0.0), pointer_default(unique), helpstring("Active Directory Replication LDAP Blobs") ] interface drsblobs { /* * replPropertyMetaData * w2k uses version 1 * w2k3 uses version 1 */ typedef struct { uint32 attribute_id; uint32 version; NTTIME_1sec orginating_time; GUID orginating_dsa; /* the 'invocationId' ? */ hyper orginating_usn; hyper local_usn; } replPropertyMetaData1; typedef struct { uint32 count; uint32 reserved; replPropertyMetaData1 array[count]; } replPropertyMetaDataCtr1; typedef [nodiscriminant] union { [case(1)] replPropertyMetaDataCtr1 ctr1; } replPropertyMetaDataCtr; typedef [public] struct { uint32 version; uint32 reserved; [switch_is(version)] replPropertyMetaDataCtr ctr; } replPropertyMetaDataBlob; void decode_replPropertyMetaData( [in] replPropertyMetaDataBlob blob ); /* * replUpToDateVector * w2k uses version 1 * w2k3 uses version 2 */ typedef struct { GUID invocation_id_guid; /* the 'invocationId' field of the CN=NTDS Settings object */ hyper highest_usn; /* updated after a full replication cycle */ } replUpToDateVector1; typedef struct { uint32 count; uint32 reserved; replUpToDateVector1 array[count]; } replUpToDateVectorCtr1; typedef struct { GUID invocation_id_guid; /* the 'invocationId' field of the CN=NTDS Settings object */ hyper highest_usn; /* updated after a full replication cycle */ NTTIME_1sec last_success; } replUpToDateVector2; typedef struct { uint32 count; uint32 reserved; replUpToDateVector2 array[count]; } replUpToDateVectorCtr2; typedef [nodiscriminant] union { [case(1)] replUpToDateVectorCtr1 ctr1; [case(2)] replUpToDateVectorCtr2 ctr2; } replUpToDateVectorCtr; typedef [public] struct { uint32 version; uint32 reserved; [switch_is(version)] replUpToDateVectorCtr ctr; } replUpToDateVectorBlob; void decode_replUpToDateVector( [in] replUpToDateVectorBlob blob ); /* * repsFrom/repsTo * w2k uses version 1 * w2k3 uses version 1 */ typedef [gensize] struct { asclstr dns_name; } repsFromTo1OtherInfo; typedef [gensize,flag(NDR_PAHEX)] struct { /* this includes the 8 bytes of the repsFromToBlob header */ [value(ndr_size_repsFromTo1(r, ndr->flags)+8)] uint32 blobsize; uint32 consecutive_sync_failures; NTTIME_1sec last_success; NTTIME_1sec last_attempt; WERROR result_last_attempt; [relative,length_is(other_info_length)] repsFromTo1OtherInfo *other_info; [value(ndr_size_repsFromTo1OtherInfo(r->other_info, ndr->flags))] uint32 other_info_length; uint32 replica_flags; uint8 schedule[84]; uint32 reserved; hyper tmp_highest_usn; /* updated after each object update */ hyper reserved_usn; hyper highest_usn; /* updated after a full replication cycle */ GUID source_dsa_obj_guid; /* the 'objectGuid' field of the CN=NTDS Settings object */ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */ GUID transport_guid; } repsFromTo1; typedef [nodiscriminant] union { [case(1)] repsFromTo1 ctr1; } repsFromTo; typedef [public] struct { uint32 version; uint32 reserved; [switch_is(version)] repsFromTo ctr; } repsFromToBlob; void decode_repsFromTo( [in] repsFromToBlob blob ); }