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";
102 WERROR drsuapi_DsBind
(
103 [in] GUID
*bind_guid
,
104 [in,out] drsuapi_DsBindInfoCtr
*bind_info
,
105 [out,ref] policy_handle
*bind_handle
110 WERROR drsuapi_DsUnbind
(
111 [in,out,ref] policy_handle
*bind_handle
120 uint8 byte_array
[28];
122 [size_is(str_len
+1)] uint16 nc_dn
[];
123 } drsuapi_DsReplicaSyncRequest1Info
;
126 DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION
= 0x00000001,
127 DRSUAPI_DS_REPLICA_SYNC_WRITEABLE
= 0x00000002,
128 DRSUAPI_DS_REPLICA_SYNC_PERIODIC
= 0x00000004,
129 DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING
= 0x00000008,
130 DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES
= 0x00000010,
131 DRSUAPI_DS_REPLICA_SYNC_FULL
= 0x00000020,
132 DRSUAPI_DS_REPLICA_SYNC_URGENT
= 0x00000040,
133 DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD
= 0x00000080,
134 DRSUAPI_DS_REPLICA_SYNC_FORCE
= 0x00000100,
135 DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE
= 0x00000200,
136 DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED
= 0x00000400,
137 DRSUAPI_DS_REPLICA_SYNC_TWO_WAY
= 0x00000800,
138 DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY
= 0x00001000,
139 DRSUAPI_DS_REPLICA_SYNC_INITIAL
= 0x00002000,
140 DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION
= 0x00004000,
141 DRSUAPI_DS_REPLICA_SYNC_ABANDONED
= 0x00008000,
142 DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS
= 0x00010000,
143 DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET
= 0x00020000,
144 DRSUAPI_DS_REPLICA_SYNC_REQUEUE
= 0x00040000,
145 DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION
= 0x00080000,
146 DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA
= 0x00100000,
147 DRSUAPI_DS_REPLICA_SYNC_CRITICAL
= 0x00200000,
148 DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS
= 0x00400000,
149 DRSUAPI_DS_REPLICA_SYNC_PREEMPTED
= 0x00800000
150 } drsuapi_DsReplicaSyncOptions
;
153 [ref] drsuapi_DsReplicaSyncRequest1Info
*info
;
156 drsuapi_DsReplicaSyncOptions options
;
157 } drsuapi_DsReplicaSyncRequest1
;
159 typedef [switch_type(int32
)] union {
160 [case(1)] drsuapi_DsReplicaSyncRequest1 req1
;
161 } drsuapi_DsReplicaSyncRequest
;
163 WERROR drsuapi_DsReplicaSync
(
164 [in,ref] policy_handle
*bind_handle
,
166 [in,switch_is(level
),ref] drsuapi_DsReplicaSyncRequest
*req
175 } drsuapi_DsGetNCChangesUsnTriple
;
178 GUID source_dsa_invocation_id
;
180 } drsuapi_DsReplicaCoursor
;
185 [range(0,0x100000)] uint32 count
;
187 [size_is(count
)] drsuapi_DsReplicaCoursor array
[];
188 } drsuapi_DsReplicaCoursor05Ctr
;
193 [ref] drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
194 drsuapi_DsGetNCChangesUsnTriple usn1
;
195 drsuapi_DsReplicaCoursor05Ctr
*coursor
;
201 } drsuapi_DsGetNCChangesRequest5
;
203 typedef [flag
(NDR_PAHEX
)] struct {
204 [range(0,10000)] uint32 length
;
205 [size_is(length
)] uint8
*byte_array
[];
206 } drsuapi_DsGetNCChangesRequest_Ctr14
;
210 drsuapi_DsGetNCChangesRequest_Ctr14 data
;
211 } drsuapi_DsGetNCChangesRequest_Ctr13
;
214 [range(0,0x100000)] uint32 count
;
215 [size_is(count
)] drsuapi_DsGetNCChangesRequest_Ctr13
*array
[];
216 } drsuapi_DsGetNCChangesRequest_Ctr12
;
221 [ref] drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
222 drsuapi_DsGetNCChangesUsnTriple usn1
;
223 drsuapi_DsReplicaCoursor05Ctr
*coursor
;
231 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
232 } drsuapi_DsGetNCChangesRequest8
;
234 typedef [switch_type(int32
)] union {
235 [case(5)] drsuapi_DsGetNCChangesRequest5 req5
;
236 [case(8)] drsuapi_DsGetNCChangesRequest8 req8
;
237 } drsuapi_DsGetNCChangesRequest
;
240 drsuapi_DsReplicaCoursor coursor
;
242 } drsuapi_DsReplicaCoursorEx
;
247 [range(0,0x100000)] uint32 count
;
249 [size_is(count
)] drsuapi_DsReplicaCoursorEx array
[];
250 } drsuapi_DsReplicaCoursorEx05Ctr
;
255 drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
256 drsuapi_DsGetNCChangesUsnTriple usn1
;
257 drsuapi_DsGetNCChangesUsnTriple usn2
;
258 drsuapi_DsReplicaCoursorEx05Ctr
*coursor_ex
;
259 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
266 } drsuapi_DsGetNCChangesCtr6
;
269 } drsuapi_DsGetNCChangesCtr7
;
271 typedef [switch_type(int32
)] union {
272 [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6
;
273 [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7
;
274 } drsuapi_DsGetNCChangesCtr
;
276 WERROR drsuapi_DsGetNCChanges
(
277 [in,ref] policy_handle
*bind_handle
,
278 [in,out] int32 level
,
279 [in,switch_is(level
)] drsuapi_DsGetNCChangesRequest req
,
280 [out,switch_is(level
)] drsuapi_DsGetNCChangesCtr ctr
286 DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION
= 0x00000001,
287 DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE
= 0x00000002,
288 DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE
= 0x00000004,
289 DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE
= 0x00000008,
290 DRSUAPI_DS_REPLICA_UPDATE_0x00000010
= 0x00000010
291 } drsuapi_DsReplicaUpdateRefsOptions
;
297 drsuapi_DsReplicaUpdateRefsOptions options
;
298 drsuapi_DsReplicaSyncRequest1Info sync_req_info1
;
299 ascstr dest_dsa_dns_name
;
300 } drsuapi_DsReplicaUpdateRefsRequest1
;
302 typedef [switch_type(int32
)] union {
303 [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1
;
304 } drsuapi_DsReplicaUpdateRefsRequest
;
306 WERROR drsuapi_DsReplicaUpdateRefs
(
307 [in,ref] policy_handle
*bind_handle
,
309 [in,switch_is(level
)] drsuapi_DsReplicaUpdateRefsRequest req
315 DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION
= 0x00000001,
316 DRSUAPI_DS_REPLICA_ADD_WRITEABLE
= 0x00000002
318 } drsuapi_DsReplicaAddOptions
;
320 WERROR DRSUAPI_REPLICA_ADD
();
325 DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION
= 0x00000001,
326 DRSUAPI_DS_REPLICA_DELETE_WRITEABLE
= 0x00000002
328 } drsuapi_DsReplicaDeleteOptions
;
330 WERROR DRSUAPI_REPLICA_DEL
();
335 DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION
= 0x00000001,
336 DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE
= 0x00000002
337 } drsuapi_DsReplicaModifyOptions
;
339 WERROR DRSUAPI_REPLICA_MODIFY
();
343 WERROR DRSUAPI_VERIFY_NAMES
();
347 WERROR DRSUAPI_GET_MEMBERSHIPS
();
351 WERROR DRSUAPI_INTER_DOMAIN_MOVE
();
355 WERROR DRSUAPI_GET_NT4_CHANGELOG
();
359 typedef [v1_enum] enum {
360 DRSUAPI_DS_NAME_STATUS_OK
= 0,
361 DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR
= 1,
362 DRSUAPI_DS_NAME_STATUS_NOT_FOUND
= 2,
363 DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE
= 3,
364 DRSUAPI_DS_NAME_STATUS_NO_MAPPING
= 4,
365 DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY
= 5,
366 DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING
= 6,
367 DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL
= 7
368 } drsuapi_DsNameStatus
;
370 typedef [v1_enum] enum {
371 DRSUAPI_DS_NAME_FLAG_NO_FLAGS
= 0x0,
372 DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY
= 0x1,
373 DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC
= 0x2,
374 DRSUAPI_DS_NAME_FLAG_GCVERIFY
= 0x4,
375 DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL
= 0x8
376 } drsuapi_DsNameFlags
;
378 typedef [v1_enum] enum {
379 DRSUAPI_DS_NAME_FORMAT_UNKNOWN
= 0,
380 DRSUAPI_DS_NAME_FORMAT_FQDN_1779
= 1,
381 DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT
= 2,
382 DRSUAPI_DS_NAME_FORMAT_DISPLAY
= 3,
383 DRSUAPI_DS_NAME_FORMAT_GUID
= 6,
384 DRSUAPI_DS_NAME_FORMAT_CANONICAL
= 7,
385 DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL
= 8,
386 DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX
= 9,
387 DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL
= 10,
388 DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY
= 11,
389 DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN
= 12
390 } drsuapi_DsNameFormat
;
394 } drsuapi_DsNameString
;
397 uint32 unknown1
; /* 0x000004e4 */
398 uint32 unknown2
; /* 0x00000407 */
399 drsuapi_DsNameFlags format_flags
;
400 drsuapi_DsNameFormat format_offered
;
401 drsuapi_DsNameFormat format_desired
;
402 [range(1,10000)] uint32 count
;
403 [size_is(count
)] drsuapi_DsNameString
*names
[];
404 } drsuapi_DsNameRequest1
;
406 typedef [switch_type(int32
)] union {
407 [case(1)] drsuapi_DsNameRequest1 req1
;
408 } drsuapi_DsNameRequest
;
411 drsuapi_DsNameStatus status
;
412 unistr
*dns_domain_name
;
414 } drsuapi_DsNameInfo1
;
418 [size_is(count
)] drsuapi_DsNameInfo1
*array
[];
419 } drsuapi_DsNameCtr1
;
421 typedef [switch_type(int32
)] union {
422 [case(1)] drsuapi_DsNameCtr1
*ctr1
;
425 WERROR drsuapi_DsCrackNames
(
426 [in,ref] policy_handle
*bind_handle
,
427 [in, out] int32 level
,
428 [in,switch_is(level
)] drsuapi_DsNameRequest req
,
429 [out,switch_is(level
)] drsuapi_DsNameCtr ctr
434 typedef [v1_enum] enum {
435 DRSUAPI_DS_SPN_OPERATION_ADD
= 0,
436 DRSUAPI_DS_SPN_OPERATION_REPLACE
= 1,
437 DRSUAPI_DS_SPN_OPERATION_DELETE
= 2
438 } drsuapi_DsSpnOperation
;
441 drsuapi_DsSpnOperation operation
;
444 [range(0,10000)] uint32 count
;
445 [size_is(count
)] drsuapi_DsNameString
*spn_names
[];
446 } drsuapi_DsWriteAccountSpnRequest1
;
448 typedef [switch_type(int32
)] union {
449 [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1
;
450 } drsuapi_DsWriteAccountSpnRequest
;
454 } drsuapi_DsWriteAccountSpnResult1
;
456 typedef [switch_type(int32
)] union {
457 [case(1)] drsuapi_DsWriteAccountSpnResult1 res1
;
458 } drsuapi_DsWriteAccountSpnResult
;
460 WERROR drsuapi_DsWriteAccountSpn
(
461 [in,ref] policy_handle
*bind_handle
,
462 [in, out] int32 level
,
463 [in,switch_is(level
)] drsuapi_DsWriteAccountSpnRequest req
,
464 [out,switch_is(level
)] drsuapi_DsWriteAccountSpnResult res
469 WERROR DRSUAPI_REMOVE_DS_SERVER
();
473 WERROR DRSUAPI_REMOVE_DS_DOMAIN
();
478 unistr
*domain_name
; /* netbios or dns */
479 int32 level
; /* specifies the switch level for the request */
480 } drsuapi_DsGetDCInfoRequest1
;
482 typedef [switch_type(int32
)] union {
483 [case(1)] drsuapi_DsGetDCInfoRequest1 req1
;
484 } drsuapi_DsGetDCInfoRequest
;
487 unistr
*netbios_name
;
494 } drsuapi_DsGetDCInfo1
;
497 [range(0,10000)] uint32 count
;
498 [size_is(count
)] drsuapi_DsGetDCInfo1
*array
[];
499 } drsuapi_DsGetDCInfoCtr1
;
502 unistr
*netbios_name
;
516 } drsuapi_DsGetDCInfo2
;
519 [range(0,10000)] uint32 count
;
520 [size_is(count
)] drsuapi_DsGetDCInfo2
*array
[];
521 } drsuapi_DsGetDCInfoCtr2
;
530 unistr
*server_nt4_account
;
531 } drsuapi_DsGetDCInfo01
;
534 [range(0,10000)] uint32 count
;
535 [size_is(count
)] drsuapi_DsGetDCInfo01
*array
[];
536 } drsuapi_DsGetDCInfoCtr01
;
538 typedef [v1_enum] enum {
539 DRSUAPI_DC_INFO_CTR_1
= 1,
540 DRSUAPI_DC_INFO_CTR_2
= 2,
541 DRSUAPI_DC_INFO_CTR_01
= -1,
542 } drsuapi_DsGetDCInfoCtrLevels
;
544 typedef [switch_type(int32
)] union {
545 [case(DRSUAPI_DC_INFO_CTR_1
)] drsuapi_DsGetDCInfoCtr1 ctr1
;
546 [case(DRSUAPI_DC_INFO_CTR_2
)] drsuapi_DsGetDCInfoCtr2 ctr2
;
547 [case(DRSUAPI_DC_INFO_CTR_01
)] drsuapi_DsGetDCInfoCtr01 ctr01
;
548 } drsuapi_DsGetDCInfoCtr
;
550 WERROR drsuapi_DsGetDomainControllerInfo
(
551 [in,ref] policy_handle
*bind_handle
,
552 [in, out] int32 level
,
553 [in,switch_is(level
)] drsuapi_DsGetDCInfoRequest req
,
554 [out,switch_is(level
)] drsuapi_DsGetDCInfoCtr ctr
559 WERROR drsuapi_DsAddEntry
();
563 WERROR DRSUAPI_EXECUTE_KCC
();
567 typedef [v1_enum] enum {
568 DRSUAPI_DS_REPLICA_GET_INFO
= 1,
569 DRSUAPI_DS_REPLICA_GET_INFO2
= 2
570 } drsuapi_DsReplicaGetInfoLevel
;
572 typedef [v1_enum] enum {
573 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
= 0,
574 DRSUAPI_DS_REPLICA_INFO_CURSORS
= 1,
575 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
= 2,
576 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
= 3,
577 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
= 4,
578 DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
= 5,
579 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
= 6,
580 DRSUAPI_DS_REPLICA_INFO_CURSORS2
= 7,
581 DRSUAPI_DS_REPLICA_INFO_CURSORS3
= 8,
582 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
= 9,
583 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
= 10,
584 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
= -2,
585 DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
= -4,
586 DRSUAPI_DS_REPLICA_INFO_CURSURS05
= -5,
587 DRSUAPI_DS_REPLICA_INFO_06
= -6
588 } drsuapi_DsReplicaInfoType
;
591 drsuapi_DsReplicaInfoType info_type
;
594 } drsuapi_DsReplicaGetInfoRequest1
;
597 drsuapi_DsReplicaInfoType info_type
;
604 } drsuapi_DsReplicaGetInfoRequest2
;
606 typedef [switch_type(drsuapi_DsReplicaGetInfoLevel
)] union {
607 [case(DRSUAPI_DS_REPLICA_GET_INFO
)] drsuapi_DsReplicaGetInfoRequest1 req1
;
608 [case(DRSUAPI_DS_REPLICA_GET_INFO2
)] drsuapi_DsReplicaGetInfoRequest2 req2
;
609 } drsuapi_DsReplicaGetInfoRequest
;
612 unistr
*naming_context_dn
;
613 unistr
*source_dsa_obj_dn
;
614 unistr
*source_dsa_address
;
615 unistr
*transport_obj_dn
;
616 uint32 replica_flags
;
618 GUID naming_context_obj_guid
;
619 GUID source_dsa_obj_guid
;
620 GUID source_dsa_invocation_id
;
621 GUID transport_obj_guid
;
622 hyper tmp_highest_usn
;
626 WERROR result_last_attempt
;
627 uint32 consecutive_sync_failures
;
628 } drsuapi_DsReplicaNeighbour
;
633 [size_is(count
)] drsuapi_DsReplicaNeighbour array
[];
634 } drsuapi_DsReplicaNeighbourCtr
;
639 [size_is(count
)] drsuapi_DsReplicaCoursor array
[];
640 } drsuapi_DsReplicaCoursorCtr
;
643 unistr
*attribute_name
;
645 NTTIME originating_last_changed
;
646 GUID originating_dsa_invocation_id
;
647 hyper originating_usn
;
649 } drsuapi_DsReplicaObjMetaData
;
654 [size_is(count
)] drsuapi_DsReplicaObjMetaData array
[];
655 } drsuapi_DsReplicaObjMetaDataCtr
;
660 NTTIME first_failure
;
663 } drsuapi_DsReplicaKccDsaFailure
;
668 [size_is(count
)] drsuapi_DsReplicaKccDsaFailure array
[];
669 } drsuapi_DsReplicaKccDsaFailuresCtr
;
672 DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
= 0,
673 DRSUAPI_DS_REPLICA_OP_TYPE_ADD
= 1,
674 DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
= 2,
675 DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
= 3,
676 DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
= 4
677 } drsuapi_DsReplicaOpType
;
679 typedef [switch_type(drsuapi_DsReplicaOpType
)] union {
680 [case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
)] drsuapi_DsReplicaSyncOptions sync
;
681 [case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD
)] drsuapi_DsReplicaAddOptions add
;
682 [case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
)] drsuapi_DsReplicaDeleteOptions delete
;
683 [case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
)] drsuapi_DsReplicaModifyOptions modify
;
684 [case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
)] drsuapi_DsReplicaUpdateRefsOptions update_refs
;
685 [default] uint32 unknown
;
686 } drsuapi_DsRplicaOpOptions
;
689 NTTIME operation_start
;
690 uint32 serial_num
; /* unique till reboot */
692 drsuapi_DsReplicaOpType operation_type
;
693 [switch_is(operation_type
)] drsuapi_DsRplicaOpOptions options
;
695 unistr
*remote_dsa_obj_dn
;
696 unistr
*remote_dsa_address
;
698 GUID remote_dsa_obj_guid
;
699 } drsuapi_DsReplicaOp
;
704 [size_is(count
)] drsuapi_DsReplicaOp array
[];
705 } drsuapi_DsReplicaOpCtr
;
708 unistr
*attribute_name
;
711 [size_is(value_length
)] uint8
*value
[];
715 NTTIME originating_last_changed
;
716 GUID originating_dsa_invocation_id
;
717 hyper originating_usn
;
719 } drsuapi_DsReplicaAttrValMetaData
;
723 int32 enumeration_context
;
724 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData array
[];
725 } drsuapi_DsReplicaAttrValMetaDataCtr
;
728 GUID source_dsa_invocation_id
;
730 NTTIME last_sync_success
;
731 } drsuapi_DsReplicaCoursor2
;
735 int32 enumeration_context
;
736 [size_is(count
)] drsuapi_DsReplicaCoursor2 array
[];
737 } drsuapi_DsReplicaCoursor2Ctr
;
740 GUID source_dsa_invocation_id
;
742 NTTIME last_sync_success
;
743 unistr
*source_dsa_obj_dn
;
744 } drsuapi_DsReplicaCoursor3
;
748 int32 enumeration_context
;
749 [size_is(count
)] drsuapi_DsReplicaCoursor3 array
[];
750 } drsuapi_DsReplicaCoursor3Ctr
;
753 unistr
*attribute_name
;
755 NTTIME originating_last_changed
;
756 GUID originating_dsa_invocation_id
;
757 hyper originating_usn
;
759 unistr
*originating_dsa_obj_dn
;
760 } drsuapi_DsReplicaObjMetaData2
;
764 int32 enumeration_context
;
765 [size_is(count
)] drsuapi_DsReplicaObjMetaData2 array
[];
766 } drsuapi_DsReplicaObjMetaData2Ctr
;
769 unistr
*attribute_name
;
772 [size_is(value_length
)] uint8
*value
[];
776 NTTIME originating_last_changed
;
777 GUID originating_dsa_invocation_id
;
778 hyper originating_usn
;
780 unistr
*originating_dsa_obj_dn
;
781 } drsuapi_DsReplicaAttrValMetaData2
;
785 int32 enumeration_context
;
786 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData2 array
[];
787 } drsuapi_DsReplicaAttrValMetaData2Ctr
;
790 hyper u1
; /* session number? */
794 NTTIME_1sec bind_time
;
795 uint32 u4
; /* flags? */
797 } drsuapi_DsReplicaConnection04
;
800 [range(0,10000)] uint32 count
;
802 [size_is(count
)] drsuapi_DsReplicaConnection04 array
[];
803 } drsuapi_DsReplicaConnection04Ctr
;
814 } drsuapi_DsReplica06
;
817 [range(0,256)] uint32 count
;
819 [size_is(count
)] drsuapi_DsReplica06 array
[];
820 } drsuapi_DsReplica06Ctr
;
822 typedef [switch_type(drsuapi_DsReplicaInfoType
)] union {
823 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
)] drsuapi_DsReplicaNeighbourCtr
*neighbours
;
824 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS
)] drsuapi_DsReplicaCoursorCtr
*coursors
;
825 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
)] drsuapi_DsReplicaObjMetaDataCtr
*objmetadata
;
826 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*connectfailures
;
827 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*linkfailures
;
828 [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
)] drsuapi_DsReplicaOpCtr
*pendingops
;
829 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
)] drsuapi_DsReplicaAttrValMetaDataCtr
*attrvalmetadata
;
830 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2
)] drsuapi_DsReplicaCoursor2Ctr
*coursors2
;
831 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3
)] drsuapi_DsReplicaCoursor3Ctr
*coursors3
;
832 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
)] drsuapi_DsReplicaObjMetaData2Ctr
*objmetadata2
;
833 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
)] drsuapi_DsReplicaAttrValMetaData2Ctr
*attrvalmetadata2
;
834 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
)] drsuapi_DsReplicaNeighbourCtr
*neighbours02
;
835 [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
)] drsuapi_DsReplicaConnection04Ctr
*connections04
;
836 [case(DRSUAPI_DS_REPLICA_INFO_CURSURS05
)] drsuapi_DsReplicaCoursor05Ctr
*coursors05
;
837 [case(DRSUAPI_DS_REPLICA_INFO_06
)] drsuapi_DsReplica06Ctr
*i06
;
838 } drsuapi_DsReplicaInfo
;
840 WERROR drsuapi_DsReplicaGetInfo
(
841 [in,ref] policy_handle
*bind_handle
,
842 [in] drsuapi_DsReplicaGetInfoLevel level
,
843 [in,switch_is(level
)] drsuapi_DsReplicaGetInfoRequest req
,
844 [out] drsuapi_DsReplicaInfoType info_type
,
845 [out,switch_is(info_type
)] drsuapi_DsReplicaInfo info
850 WERROR DRSUAPI_ADD_SID_HISTORY
();
854 WERROR DRSUAPI_GET_MEMBERSHIPS2
();
858 WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS
();
862 WERROR DRSUAPI_GET_OBJECT_EXISTENCE
();
866 WERROR DRSUAPI_QUERY_SITES_BY_COST
();