4 uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
6 endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]", "ncacn_ip_tcp:", "ncalrpc:"),
8 helpstring("Active Directory Replication"),
9 pointer_default(unique)
15 typedef [bitmap32bit
] bitmap
{
16 DRSUAPI_SUPPORTED_EXTENSION_BASE
= 0x00000001,
17 DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION
= 0x00000002,
18 DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI
= 0x00000004,
19 DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2
= 0x00000008,
20 DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS
= 0x00000010,
21 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1
= 0x00000020,
22 DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION
= 0x00000040,
23 DRSUAPI_SUPPORTED_EXTENSION_00000080
= 0x00000080,
24 DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE
= 0x00000100,
25 DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2
= 0x00000200,
26 DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION
= 0x00000400,
27 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2
= 0x00000800,
28 DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD
= 0x00001000,
29 DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND
= 0x00002000,
30 DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO
= 0x00004000,
31 DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION
= 0x00008000,
32 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01
= 0x00010000,
33 DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP
= 0x00020000,
34 DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY
= 0x00040000,
35 DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3
= 0x00080000,
36 DRSUAPI_SUPPORTED_EXTENSION_00100000
= 0x00100000,
37 DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2
= 0x00200000,
38 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6
= 0x00400000,
39 DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS
= 0x00800000,
40 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8
= 0x01000000,
41 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5
= 0x02000000,
42 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6
= 0x04000000,
44 * the following 3 have the same value
45 * repadmin.exe /bind says that
47 DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3
= 0x08000000,
48 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7
= 0x08000000,
49 DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT
= 0x08000000,
50 DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS
= 0x10000000,
51 DRSUAPI_SUPPORTED_EXTENSION_20000000
= 0x20000000,
52 DRSUAPI_SUPPORTED_EXTENSION_40000000
= 0x40000000,
53 DRSUAPI_SUPPORTED_EXTENSION_80000000
= 0x80000000
54 } drsuapi_SupportedExtensions
;
56 /* this is used by w2k */
58 drsuapi_SupportedExtensions supported_extensions
;
61 } drsuapi_DsBindInfo24
;
63 /* this is used by w2k3 */
65 drsuapi_SupportedExtensions supported_extensions
;
69 } drsuapi_DsBindInfo28
;
72 [flag(NDR_REMAINING)] DATA_BLOB info;
73 } drsuapi_DsBindInfoFallBack;
76 [case(24)] drsuapi_DsBindInfo24 info24
;
77 [case(28)] drsuapi_DsBindInfo28 info28
;
78 /* [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack;*/
81 /* the drsuapi_DsBindInfoCtr was this before
82 * typedef [flag(NDR_PAHEX)] struct {
83 * [range(1,10000)] uint32 length;
84 * [size_is(length)] uint8 data[];
85 * } drsuapi_DsBindInfo;
87 * but we don't want the caller to manually decode this blob,
88 * so we're doing it here
92 [range(1,10000)] uint32 length
;
93 [switch_is(length
)] drsuapi_DsBindInfo info
;
94 } drsuapi_DsBindInfoCtr
;
96 /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
98 * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
100 /* const string DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d";
103 WERROR drsuapi_DsBind
(
104 [in] GUID
*bind_guid
,
105 [in,out] drsuapi_DsBindInfoCtr
*bind_info
,
106 [out,ref] policy_handle
*bind_handle
111 WERROR drsuapi_DsUnbind
(
112 [in,out,ref] policy_handle
*bind_handle
121 uint8 byte_array
[28];
123 [size_is(str_len
+1)] uint16 nc_dn
[];
124 } drsuapi_DsReplicaSyncRequest1Info
;
127 DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION
= 0x00000001,
128 DRSUAPI_DS_REPLICA_SYNC_WRITEABLE
= 0x00000002,
129 DRSUAPI_DS_REPLICA_SYNC_PERIODIC
= 0x00000004,
130 DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING
= 0x00000008,
131 DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES
= 0x00000010,
132 DRSUAPI_DS_REPLICA_SYNC_FULL
= 0x00000020,
133 DRSUAPI_DS_REPLICA_SYNC_URGENT
= 0x00000040,
134 DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD
= 0x00000080,
135 DRSUAPI_DS_REPLICA_SYNC_FORCE
= 0x00000100,
136 DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE
= 0x00000200,
137 DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED
= 0x00000400,
138 DRSUAPI_DS_REPLICA_SYNC_TWO_WAY
= 0x00000800,
139 DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY
= 0x00001000,
140 DRSUAPI_DS_REPLICA_SYNC_INITIAL
= 0x00002000,
141 DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION
= 0x00004000,
142 DRSUAPI_DS_REPLICA_SYNC_ABANDONED
= 0x00008000,
143 DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS
= 0x00010000,
144 DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET
= 0x00020000,
145 DRSUAPI_DS_REPLICA_SYNC_REQUEUE
= 0x00040000,
146 DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION
= 0x00080000,
147 DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA
= 0x00100000,
148 DRSUAPI_DS_REPLICA_SYNC_CRITICAL
= 0x00200000,
149 DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS
= 0x00400000,
150 DRSUAPI_DS_REPLICA_SYNC_PREEMPTED
= 0x00800000
151 } drsuapi_DsReplicaSyncOptions
;
154 [ref] drsuapi_DsReplicaSyncRequest1Info
*info
;
155 GUID source_dsa_guid
;
156 a_string
*other_info
; /* I assume this is related to the repsFromTo1OtherInfo dns_name */
157 drsuapi_DsReplicaSyncOptions options
;
158 } drsuapi_DsReplicaSyncRequest1
;
160 typedef [switch_type(uint32
)] union {
161 [case(1)] drsuapi_DsReplicaSyncRequest1 req1
;
162 } drsuapi_DsReplicaSyncRequest
;
164 WERROR drsuapi_DsReplicaSync
(
165 [in,ref] policy_handle
*bind_handle
,
167 [in,switch_is(level
),ref] drsuapi_DsReplicaSyncRequest
*req
176 } drsuapi_DsGetNCChangesUsnTriple
;
179 GUID source_dsa_invocation_id
;
181 } drsuapi_DsReplicaCursor
;
186 [range(0,0x100000)] uint32 count
;
188 [size_is(count
)] drsuapi_DsReplicaCursor array
[];
189 } drsuapi_DsReplicaCursor05Ctr
;
194 [ref] drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
195 drsuapi_DsGetNCChangesUsnTriple usn1
;
196 drsuapi_DsReplicaCursor05Ctr
*coursor
;
202 } drsuapi_DsGetNCChangesRequest5
;
204 typedef [flag
(NDR_PAHEX
)] struct {
205 [range(0,10000)] uint32 length
;
206 [size_is(length
)] uint8
*byte_array
[];
207 } drsuapi_DsGetNCChangesRequest_Ctr14
;
211 drsuapi_DsGetNCChangesRequest_Ctr14 data
;
212 } drsuapi_DsGetNCChangesRequest_Ctr13
;
215 [range(0,0x100000)] uint32 count
;
216 [size_is(count
)] drsuapi_DsGetNCChangesRequest_Ctr13
*array
[];
217 } drsuapi_DsGetNCChangesRequest_Ctr12
;
222 [ref] drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
223 drsuapi_DsGetNCChangesUsnTriple usn1
;
224 drsuapi_DsReplicaCursor05Ctr
*coursor
;
232 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
233 } drsuapi_DsGetNCChangesRequest8
;
235 typedef [switch_type(uint32
)] union {
236 [case(5)] drsuapi_DsGetNCChangesRequest5 req5
;
237 [case(8)] drsuapi_DsGetNCChangesRequest8 req8
;
238 } drsuapi_DsGetNCChangesRequest
;
241 drsuapi_DsReplicaCursor coursor
;
243 } drsuapi_DsReplicaCursorEx
;
248 [range(0,0x100000)] uint32 count
;
250 [size_is(count
)] drsuapi_DsReplicaCursorEx array
[];
251 } drsuapi_DsReplicaCursorEx05Ctr
;
256 drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
257 drsuapi_DsGetNCChangesUsnTriple usn1
;
258 drsuapi_DsGetNCChangesUsnTriple usn2
;
259 drsuapi_DsReplicaCursorEx05Ctr
*coursor_ex
;
260 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
267 } drsuapi_DsGetNCChangesCtr6
;
270 } drsuapi_DsGetNCChangesCtr7;
272 typedef [switch_type(uint32
)] union {
273 [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6
;
274 /* [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7;*/
275 } drsuapi_DsGetNCChangesCtr
;
277 WERROR drsuapi_DsGetNCChanges
(
278 [in,ref] policy_handle
*bind_handle
,
280 [in,ref,switch_is(level
)] drsuapi_DsGetNCChangesRequest
*req
,
281 [out,ref] uint32
*level_out
,
282 [out,ref,switch_is(*level_out
)] drsuapi_DsGetNCChangesCtr
*ctr
290 typedef [public,gensize
] struct {
291 [value
(ndr_size_drsuapi_DsReplicaObjectIdentifier
(r
, ndr
->iconv_convenience
, ndr
->flags
)-4)] uint32 __ndr_size
;
292 [value
(ndr_size_dom_sid28
(&sid
, ndr
->flags
))] uint32 __ndr_size_sid
;
295 [value
(strlen_m
(dn
))] uint32 __ndr_size_dn
;
297 } drsuapi_DsReplicaObjectIdentifier
;
300 DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION
= 0x00000001,
301 DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK
= 0x00000002,
302 DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE
= 0x00000004,
303 DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE
= 0x00000008,
304 DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE
= 0x00000010
305 } drsuapi_DsReplicaUpdateRefsOptions
;
308 [ref] drsuapi_DsReplicaObjectIdentifier
*naming_context
;
309 a_string
*dest_dsa_dns_name
;
311 drsuapi_DsReplicaUpdateRefsOptions options
;
312 } drsuapi_DsReplicaUpdateRefsRequest1
;
314 typedef [switch_type(uint32
)] union {
315 [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1
;
316 } drsuapi_DsReplicaUpdateRefsRequest
;
318 WERROR drsuapi_DsReplicaUpdateRefs
(
319 [in,ref] policy_handle
*bind_handle
,
321 [in,switch_is(level
)] drsuapi_DsReplicaUpdateRefsRequest req
327 DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION
= 0x00000001,
328 DRSUAPI_DS_REPLICA_ADD_WRITEABLE
= 0x00000002
330 } drsuapi_DsReplicaAddOptions
;
332 WERROR DRSUAPI_REPLICA_ADD
();
337 DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION
= 0x00000001,
338 DRSUAPI_DS_REPLICA_DELETE_WRITEABLE
= 0x00000002
340 } drsuapi_DsReplicaDeleteOptions
;
342 WERROR DRSUAPI_REPLICA_DEL
();
347 DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION
= 0x00000001,
348 DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE
= 0x00000002
349 } drsuapi_DsReplicaModifyOptions
;
351 WERROR DRSUAPI_REPLICA_MODIFY
();
355 WERROR DRSUAPI_VERIFY_NAMES
();
359 WERROR DRSUAPI_GET_MEMBERSHIPS
();
363 WERROR DRSUAPI_INTER_DOMAIN_MOVE
();
367 WERROR DRSUAPI_GET_NT4_CHANGELOG
();
371 typedef [v1_enum] enum {
372 DRSUAPI_DS_NAME_STATUS_OK
= 0,
373 DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR
= 1,
374 DRSUAPI_DS_NAME_STATUS_NOT_FOUND
= 2,
375 DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE
= 3,
376 DRSUAPI_DS_NAME_STATUS_NO_MAPPING
= 4,
377 DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY
= 5,
378 DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING
= 6,
379 DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL
= 7
380 } drsuapi_DsNameStatus
;
382 typedef [v1_enum] enum {
383 DRSUAPI_DS_NAME_FLAG_NO_FLAGS
= 0x0,
384 DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY
= 0x1,
385 DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC
= 0x2,
386 DRSUAPI_DS_NAME_FLAG_GCVERIFY
= 0x4,
387 DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL
= 0x8
388 } drsuapi_DsNameFlags
;
390 typedef [v1_enum] enum {
391 DRSUAPI_DS_NAME_FORMAT_UKNOWN
= 0,
392 DRSUAPI_DS_NAME_FORMAT_FQDN_1779
= 1,
393 DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT
= 2,
394 DRSUAPI_DS_NAME_FORMAT_DISPLAY
= 3,
395 DRSUAPI_DS_NAME_FORMAT_GUID
= 6,
396 DRSUAPI_DS_NAME_FORMAT_CANONICAL
= 7,
397 DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL
= 8,
398 DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX
= 9,
399 DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL
= 10,
400 DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY
= 11,
401 DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN
= 12
402 } drsuapi_DsNameFormat
;
406 } drsuapi_DsNameString
;
409 uint32 unknown1
; /* 0x000004e4 */
410 uint32 unknown2
; /* 0x00000407 */
411 drsuapi_DsNameFlags format_flags
;
412 drsuapi_DsNameFormat format_offered
;
413 drsuapi_DsNameFormat format_desired
;
414 [range(1,10000)] uint32 count
;
415 [size_is(count
)] drsuapi_DsNameString
*names
[];
416 } drsuapi_DsNameRequest1
;
418 typedef [switch_type(uint32
)] union {
419 [case(1)] drsuapi_DsNameRequest1 req1
;
420 } drsuapi_DsNameRequest
;
423 drsuapi_DsNameStatus status
;
424 unistr
*dns_domain_name
;
426 } drsuapi_DsNameInfo1
;
430 [size_is(count
)] drsuapi_DsNameInfo1
*array
[];
431 } drsuapi_DsNameCtr1
;
433 typedef [switch_type(uint32
)] union {
434 [case(1)] drsuapi_DsNameCtr1
*ctr1
;
437 WERROR drsuapi_DsCrackNames
(
438 [in,ref] policy_handle
*bind_handle
,
440 [in,ref,switch_is(level
)] drsuapi_DsNameRequest
*req
,
441 [out,ref] uint32
*level_out
,
442 [out,ref,switch_is(*level_out
)] drsuapi_DsNameCtr
*ctr
447 typedef [v1_enum] enum {
448 DRSUAPI_DS_SPN_OPERATION_ADD
= 0,
449 DRSUAPI_DS_SPN_OPERATION_REPLACE
= 1,
450 DRSUAPI_DS_SPN_OPERATION_DELETE
= 2
451 } drsuapi_DsSpnOperation
;
454 drsuapi_DsSpnOperation operation
;
457 [range(0,10000)] uint32 count
;
458 [size_is(count
)] drsuapi_DsNameString
*spn_names
;
459 } drsuapi_DsWriteAccountSpnRequest1
;
461 typedef [switch_type(uint32
)] union {
462 [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1
;
463 } drsuapi_DsWriteAccountSpnRequest
;
467 } drsuapi_DsWriteAccountSpnResult1
;
469 typedef [switch_type(uint32
)] union {
470 [case(1)] drsuapi_DsWriteAccountSpnResult1 res1
;
471 } drsuapi_DsWriteAccountSpnResult
;
473 WERROR drsuapi_DsWriteAccountSpn
(
474 [in,ref] policy_handle
*bind_handle
,
476 [in,ref,switch_is(level
)] drsuapi_DsWriteAccountSpnRequest
*req
,
477 [out,ref] uint32
*level_out
,
478 [out,ref,switch_is(*level_out
)] drsuapi_DsWriteAccountSpnResult
*res
483 WERROR DRSUAPI_REMOVE_DS_SERVER
();
487 WERROR DRSUAPI_REMOVE_DS_DOMAIN
();
492 unistr
*domain_name
; /* netbios or dns */
493 int32 level
; /* specifies the switch level for the request */
494 } drsuapi_DsGetDCInfoRequest1
;
496 typedef [switch_type(uint32
)] union {
497 [case(1)] drsuapi_DsGetDCInfoRequest1 req1
;
498 } drsuapi_DsGetDCInfoRequest
;
501 unistr
*netbios_name
;
508 } drsuapi_DsGetDCInfo1
;
511 [range(0,10000)] uint32 count
;
512 [size_is(count
)] drsuapi_DsGetDCInfo1
*array
[];
513 } drsuapi_DsGetDCInfoCtr1
;
516 unistr
*netbios_name
;
530 } drsuapi_DsGetDCInfo2
;
533 [range(0,10000)] uint32 count
;
534 [size_is(count
)] drsuapi_DsGetDCInfo2
*array
[];
535 } drsuapi_DsGetDCInfoCtr2
;
544 unistr
*server_nt4_account
;
545 } drsuapi_DsGetDCInfo01
;
548 [range(0,10000)] uint32 count
;
549 [size_is(count
)] drsuapi_DsGetDCInfo01
*array
[];
550 } drsuapi_DsGetDCInfoCtr01
;
552 typedef [v1_enum] enum {
553 DRSUAPI_DC_INFO_CTR_1
= 1,
554 DRSUAPI_DC_INFO_CTR_2
= 2,
555 DRSUAPI_DC_INFO_CTR_01
= -1
556 } drsuapi_DsGetDCInfoCtrLevels
;
558 typedef [switch_type(uint32
)] union {
559 [case(DRSUAPI_DC_INFO_CTR_1
)] drsuapi_DsGetDCInfoCtr1 ctr1
;
560 [case(DRSUAPI_DC_INFO_CTR_2
)] drsuapi_DsGetDCInfoCtr2 ctr2
;
561 [case(DRSUAPI_DC_INFO_CTR_01
)] drsuapi_DsGetDCInfoCtr01 ctr01
;
562 } drsuapi_DsGetDCInfoCtr
;
564 WERROR drsuapi_DsGetDomainControllerInfo
(
565 [in,ref] policy_handle
*bind_handle
,
567 [in,ref,switch_is(level
)] drsuapi_DsGetDCInfoRequest
*req
,
568 [out,ref] uint32
*level_out
,
569 [out,ref,switch_is(*level_out
)] drsuapi_DsGetDCInfoCtr
*ctr
574 WERROR drsuapi_DsAddEntry
();
578 WERROR DRSUAPI_EXECUTE_KCC
();
582 typedef [v1_enum] enum {
583 DRSUAPI_DS_REPLICA_GET_INFO
= 1,
584 DRSUAPI_DS_REPLICA_GET_INFO2
= 2
585 } drsuapi_DsReplicaGetInfoLevel
;
587 typedef [v1_enum] enum {
588 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
= 0,
589 DRSUAPI_DS_REPLICA_INFO_CURSORS
= 1,
590 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
= 2,
591 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
= 3,
592 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
= 4,
593 DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
= 5,
594 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
= 6,
595 DRSUAPI_DS_REPLICA_INFO_CURSORS2
= 7,
596 DRSUAPI_DS_REPLICA_INFO_CURSORS3
= 8,
597 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
= 9,
598 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
= 10,
599 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
= -2,
600 DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
= -4,
601 DRSUAPI_DS_REPLICA_INFO_CURSURS05
= -5,
602 DRSUAPI_DS_REPLICA_INFO_06
= -6
603 } drsuapi_DsReplicaInfoType
;
606 drsuapi_DsReplicaInfoType info_type
;
609 } drsuapi_DsReplicaGetInfoRequest1
;
612 drsuapi_DsReplicaInfoType info_type
;
619 } drsuapi_DsReplicaGetInfoRequest2
;
621 typedef [switch_type(drsuapi_DsReplicaGetInfoLevel
)] union {
622 [case(DRSUAPI_DS_REPLICA_GET_INFO
)] drsuapi_DsReplicaGetInfoRequest1 req1
;
623 [case(DRSUAPI_DS_REPLICA_GET_INFO2
)] drsuapi_DsReplicaGetInfoRequest2 req2
;
624 } drsuapi_DsReplicaGetInfoRequest
;
627 unistr
*naming_context_dn
;
628 unistr
*source_dsa_obj_dn
;
629 unistr
*source_dsa_address
;
630 unistr
*transport_obj_dn
;
631 uint32 replica_flags
;
633 GUID naming_context_obj_guid
;
634 GUID source_dsa_obj_guid
;
635 GUID source_dsa_invocation_id
;
636 GUID transport_obj_guid
;
637 uint64 tmp_highest_usn
;
641 WERROR result_last_attempt
;
642 uint32 consecutive_sync_failures
;
643 } drsuapi_DsReplicaNeighbour
;
648 [size_is(count
)] drsuapi_DsReplicaNeighbour array
[];
649 } drsuapi_DsReplicaNeighbourCtr
;
654 [size_is(count
)] drsuapi_DsReplicaCursor array
[];
655 } drsuapi_DsReplicaCursorCtr
;
658 unistr
*attribute_name
;
660 NTTIME originating_last_changed
;
661 GUID originating_dsa_invocation_id
;
662 uint64 originating_usn
;
664 } drsuapi_DsReplicaObjMetaData
;
669 [size_is(count
)] drsuapi_DsReplicaObjMetaData array
[];
670 } drsuapi_DsReplicaObjMetaDataCtr
;
675 NTTIME first_failure
;
678 } drsuapi_DsReplicaKccDsaFailure
;
683 [size_is(count
)] drsuapi_DsReplicaKccDsaFailure array
[];
684 } drsuapi_DsReplicaKccDsaFailuresCtr
;
687 DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
= 0,
688 DRSUAPI_DS_REPLICA_OP_TYPE_ADD
= 1,
689 DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
= 2,
690 DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
= 3,
691 DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
= 4
692 } drsuapi_DsReplicaOpType
;
694 typedef [switch_type(drsuapi_DsReplicaOpType
)] union {
695 [case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
)] drsuapi_DsReplicaSyncOptions sync
;
696 [case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD
)] drsuapi_DsReplicaAddOptions add
;
697 [case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
)] drsuapi_DsReplicaDeleteOptions delete
;
698 [case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
)] drsuapi_DsReplicaModifyOptions modify
;
699 [case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
)] drsuapi_DsReplicaUpdateRefsOptions update_refs
;
700 [default] uint32 unknown
;
701 } drsuapi_DsRplicaOpOptions
;
704 NTTIME operation_start
;
705 uint32 serial_num
; /* unique till reboot */
707 drsuapi_DsReplicaOpType operation_type
;
708 [switch_is(operation_type
)] drsuapi_DsRplicaOpOptions options
;
710 unistr
*remote_dsa_obj_dn
;
711 unistr
*remote_dsa_address
;
713 GUID remote_dsa_obj_guid
;
714 } drsuapi_DsReplicaOp
;
719 [size_is(count
)] drsuapi_DsReplicaOp array
[];
720 } drsuapi_DsReplicaOpCtr
;
723 unistr
*attribute_name
;
726 [size_is(value_length
)] uint8
*value
[];
730 NTTIME originating_last_changed
;
731 GUID originating_dsa_invocation_id
;
732 uint64 originating_usn
;
734 } drsuapi_DsReplicaAttrValMetaData
;
738 int32 enumeration_context
;
739 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData array
[];
740 } drsuapi_DsReplicaAttrValMetaDataCtr
;
743 GUID source_dsa_invocation_id
;
745 NTTIME last_sync_success
;
746 } drsuapi_DsReplicaCursor2
;
750 int32 enumeration_context
;
751 [size_is(count
)] drsuapi_DsReplicaCursor2 array
[];
752 } drsuapi_DsReplicaCursor2Ctr
;
755 GUID source_dsa_invocation_id
;
757 NTTIME last_sync_success
;
758 unistr
*source_dsa_obj_dn
;
759 } drsuapi_DsReplicaCursor3
;
763 int32 enumeration_context
;
764 [size_is(count
)] drsuapi_DsReplicaCursor3 array
[];
765 } drsuapi_DsReplicaCursor3Ctr
;
768 unistr
*attribute_name
;
770 NTTIME originating_last_changed
;
771 GUID originating_dsa_invocation_id
;
772 uint64 originating_usn
;
774 unistr
*originating_dsa_obj_dn
;
775 } drsuapi_DsReplicaObjMetaData2
;
779 int32 enumeration_context
;
780 [size_is(count
)] drsuapi_DsReplicaObjMetaData2 array
[];
781 } drsuapi_DsReplicaObjMetaData2Ctr
;
784 unistr
*attribute_name
;
787 [size_is(value_length
)] uint8
*value
[];
791 NTTIME originating_last_changed
;
792 GUID originating_dsa_invocation_id
;
793 uint64 originating_usn
;
795 unistr
*originating_dsa_obj_dn
;
796 } drsuapi_DsReplicaAttrValMetaData2
;
800 int32 enumeration_context
;
801 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData2 array
[];
802 } drsuapi_DsReplicaAttrValMetaData2Ctr
;
805 uint64 u1
; /* session number? */
809 NTTIME_1sec bind_time
;
810 uint32 u4
; /* flags? */
812 } drsuapi_DsReplicaConnection04
;
815 [range(0,10000)] uint32 count
;
817 [size_is(count
)] drsuapi_DsReplicaConnection04 array
[];
818 } drsuapi_DsReplicaConnection04Ctr
;
829 } drsuapi_DsReplica06
;
832 [range(0,256)] uint32 count
;
834 [size_is(count
)] drsuapi_DsReplica06 array
[];
835 } drsuapi_DsReplica06Ctr
;
837 typedef [switch_type(drsuapi_DsReplicaInfoType
)] union {
838 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
)] drsuapi_DsReplicaNeighbourCtr
*neighbours
;
839 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS
)] drsuapi_DsReplicaCursorCtr
*coursors
;
840 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
)] drsuapi_DsReplicaObjMetaDataCtr
*objmetadata
;
841 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*connectfailures
;
842 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*linkfailures
;
843 [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
)] drsuapi_DsReplicaOpCtr
*pendingops
;
844 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
)] drsuapi_DsReplicaAttrValMetaDataCtr
*attrvalmetadata
;
845 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2
)] drsuapi_DsReplicaCursor2Ctr
*coursors2
;
846 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3
)] drsuapi_DsReplicaCursor3Ctr
*coursors3
;
847 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
)] drsuapi_DsReplicaObjMetaData2Ctr
*objmetadata2
;
848 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
)] drsuapi_DsReplicaAttrValMetaData2Ctr
*attrvalmetadata2
;
849 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
)] drsuapi_DsReplicaNeighbourCtr
*neighbours02
;
850 [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
)] drsuapi_DsReplicaConnection04Ctr
*connections04
;
851 [case(DRSUAPI_DS_REPLICA_INFO_CURSURS05
)] drsuapi_DsReplicaCursor05Ctr
*coursors05
;
852 [case(DRSUAPI_DS_REPLICA_INFO_06
)] drsuapi_DsReplica06Ctr
*i06
;
853 } drsuapi_DsReplicaInfo
;
855 WERROR drsuapi_DsReplicaGetInfo
(
856 [in,ref] policy_handle
*bind_handle
,
857 [in] drsuapi_DsReplicaGetInfoLevel level
,
858 [in,ref,switch_is(level
)] drsuapi_DsReplicaGetInfoRequest
*req
,
859 [out,ref] drsuapi_DsReplicaInfoType
*info_type
,
860 [out,ref,switch_is(*info_type
)] drsuapi_DsReplicaInfo
*info
865 WERROR DRSUAPI_ADD_SID_HISTORY
();
869 WERROR DRSUAPI_GET_MEMBERSHIPS2
();
873 WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS
();
877 WERROR DRSUAPI_GET_OBJECT_EXISTENCE
();
881 WERROR DRSUAPI_QUERY_SITES_BY_COST
();