#include "idl_types.h" [ uuid("38578646-4566-4564-2244-275796345667"), version(0.0), 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; uint64 orginating_usn; uint64 local_usn; } replPropertyMetaData1; typedef struct { uint32 unknown1; uint32 count; uint32 unknown2; replPropertyMetaData1 array[count]; } replPropertyMetaDataCtr1; typedef [nodiscriminant] union { [case(1)] replPropertyMetaDataCtr1 ctr1; } replPropertyMetaDataCtr; typedef [public] struct { uint32 version; [switch_is(version)] replPropertyMetaDataCtr ctr; } replPropertyMetaDataBlob; void decode_replPropertyMetaData( [in] replPropertyMetaDataBlob blob ); /* * replUpToDateVector * w2k uses version 1 * w2k3 uses version 2 */ typedef struct { GUID dsa; uint64 usn; } replUpToDateVector1; typedef struct { uint32 unknown1; uint32 count; uint32 unknown2; replUpToDateVector1 array[count]; } replUpToDateVectorCtr1; typedef struct { GUID dsa; uint64 usn; NTTIME_1sec time; } replUpToDateVector2; typedef struct { uint32 unknown1; uint32 count; uint32 unknown2; replUpToDateVector2 array[count]; } replUpToDateVectorCtr2; typedef [nodiscriminant] union { [case(1)] replUpToDateVectorCtr1 ctr1; [case(2)] replUpToDateVectorCtr2 ctr2; } replUpToDateVectorCtr; typedef [public] struct { uint32 version; [switch_is(version)] replUpToDateVectorCtr ctr; } replUpToDateVectorBlob; void decode_replUpToDateVector( [in] replUpToDateVectorBlob blob ); /* * repsFrom/repsTo * w2k uses version 1 * w2k3 uses version 1 */ typedef [flag(NDR_PAHEX)] struct { NTTIME_1sec time1; NTTIME_1sec time2; uint32 unknown1[4]; uint8 unknown2[84]; uint32 unknown3; uint64 usn1; uint32 unknown4; uint32 unknown5; uint64 usn2; GUID guid1; GUID guid2; uint32 unknown6[4]; asclstr dns_name; } repsFromTo1; typedef [nodiscriminant] union { [case(1)] repsFromTo1 ctr1; } repsFromTo; typedef [public,gensize] struct { uint32 version; uint32 unknown1; [value(ndr_size_repsFromToBlob(0, r, ndr->flags))] uint32 blobsize; uint32 unknown2; [switch_is(version)] repsFromTo ctr; } repsFromToBlob; void decode_repsFromTo( [in] repsFromToBlob blob ); }