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),
16 typedef [bitmap32bit
] bitmap
{
17 DRSUAPI_SUPPORTED_EXTENSION_BASE
= 0x00000001,
18 DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION
= 0x00000002,
19 DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI
= 0x00000004,
20 DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2
= 0x00000008,
21 DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS
= 0x00000010,
22 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1
= 0x00000020,
23 DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION
= 0x00000040,
24 DRSUAPI_SUPPORTED_EXTENSION_00000080
= 0x00000080,
25 DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE
= 0x00000100,
26 DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2
= 0x00000200,
27 DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION
= 0x00000400,
28 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2
= 0x00000800,
29 DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD
= 0x00001000,
30 DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND
= 0x00002000,
31 DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO
= 0x00004000,
32 DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION
= 0x00008000,
33 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01
= 0x00010000,
34 DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP
= 0x00020000,
35 DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY
= 0x00040000,
36 DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3
= 0x00080000,
37 DRSUAPI_SUPPORTED_EXTENSION_00100000
= 0x00100000,
38 DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2
= 0x00200000,
39 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6
= 0x00400000,
40 DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS
= 0x00800000,
41 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8
= 0x01000000,
42 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5
= 0x02000000,
43 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6
= 0x04000000,
45 * the following 3 have the same value
46 * repadmin.exe /bind says that
48 DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3
= 0x08000000,
49 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7
= 0x08000000,
50 DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT
= 0x08000000,
51 DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS
= 0x10000000,
52 DRSUAPI_SUPPORTED_EXTENSION_20000000
= 0x20000000,
53 DRSUAPI_SUPPORTED_EXTENSION_40000000
= 0x40000000,
54 DRSUAPI_SUPPORTED_EXTENSION_80000000
= 0x80000000
55 } drsuapi_SupportedExtensions
;
57 /* this is used by w2k */
59 drsuapi_SupportedExtensions supported_extensions
;
62 } drsuapi_DsBindInfo24
;
64 /* this is used by w2k3 */
66 drsuapi_SupportedExtensions supported_extensions
;
70 } drsuapi_DsBindInfo28
;
73 [flag
(NDR_REMAINING
)] DATA_BLOB info
;
74 } drsuapi_DsBindInfoFallBack
;
76 typedef [nodiscriminant
] union {
77 [case(24)][subcontext
(4)] drsuapi_DsBindInfo24 info24
;
78 [case(28)][subcontext
(4)] drsuapi_DsBindInfo28 info28
;
79 [default][subcontext
(4)] drsuapi_DsBindInfoFallBack FallBack
;
82 /* the drsuapi_DsBindInfoCtr was this before
83 * typedef [flag(NDR_PAHEX)] struct {
84 * [range(1,10000)] uint32 length;
85 * [size_is(length)] uint8 data[];
86 * } drsuapi_DsBindInfo;
88 * but we don't want the caller to manually decode this blob,
89 * so we're doing it here
93 [range(1,10000)] uint32 length
;
94 [switch_is(length
)] drsuapi_DsBindInfo info
;
95 } drsuapi_DsBindInfoCtr
;
97 /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
99 * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
101 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
117 typedef [gensize
,flag
(NDR_PAHEX
)] struct {
118 [value
(ndr_size_drsuapi_DsReplicaObjectIdentifier
(r
, ndr
->flags
)-4)] uint32 __ndr_size
;
119 [value
(ndr_length_dom_sid
(&r
->sid
))] uint32 __ndr_size_sid
;
121 [subcontext_size
(28),subcontext
(0)] dom_sid sid
;
122 [flag
(STR_SIZE4|STR_CHARLEN|STR_CONFORMANT
)] string dn
;
123 } drsuapi_DsReplicaObjectIdentifier
;
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 drsuapi_DsReplicaObjectIdentifier
*naming_context
;
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
)] 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_DsReplicaObjectIdentifier
*naming_context
;
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_DsReplicaObjectIdentifier
*naming_context
;
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
;
257 } drsuapi_DsReplicaMetaData
;
260 [range(0,1048576)] uint32 count
;
261 [size_is(count
)] drsuapi_DsReplicaMetaData meta_data
[];
262 } drsuapi_DsReplicaMetaDataCtr
;
264 typedef [flag
(NDR_PAHEX
)] struct {
265 [range(0,10485760)] uint32 length
;
267 } drsuapi_DsReplicaAttributeValue
;
270 [range(0,10485760)] uint32 num_values
;
271 [size_is(num_values
)] drsuapi_DsReplicaAttributeValue
*values
[];
272 } drsuapi_DsReplicaAttributeValueCtr
;
274 typedef [v1_enum] enum {
275 DRSUAPI_ATTR_objectClass
= 0x00000000,
276 DRSUAPI_ATTR_description
= 0x0000000d,
277 DRSUAPI_ATTR_ntSecurityDescriptor
= 0x00020119,
278 DRSUAPI_ATTR_objectSid
= 0x00090092
279 } drsuapi_DsAttributeId
;
281 typedef [flag
(NDR_PAHEX
)] struct {
282 drsuapi_DsAttributeId attid
;
283 drsuapi_DsReplicaAttributeValueCtr value_ctr
;
284 } drsuapi_DsReplicaAttribute
;
287 [range(0,1048576)] uint32 num_attributes
;
288 [size_is(num_attributes
)] drsuapi_DsReplicaAttribute
*attributes
[];
289 } drsuapi_DsReplicaAttributeCtr
;
292 drsuapi_DsReplicaObjectIdentifier
*identifier
;
294 drsuapi_DsReplicaAttributeCtr attribute_ctr
;
295 } drsuapi_DsReplicaObject
;
298 /* TODO: fix ndr_print for next_info! */
299 [print_option
(linked_list_next
)] drsuapi_DsGetNCChangesInfo1
*next
;
300 drsuapi_DsReplicaObject
object;
303 drsuapi_DsReplicaMetaDataCtr
*meta_data_ctr
;
304 } drsuapi_DsGetNCChangesInfo1
;
309 drsuapi_DsReplicaObjectIdentifier
*naming_context
;
310 drsuapi_DsGetNCChangesUsnTriple usn1
;
311 drsuapi_DsGetNCChangesUsnTriple usn2
;
312 drsuapi_DsReplicaCoursorEx05Ctr
*coursor_ex
;
313 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
315 drsuapi_DsGetNCChangesInfo1
*info1
;
317 } drsuapi_DsGetNCChangesCtr1
;
322 drsuapi_DsReplicaObjectIdentifier
*naming_context
;
323 drsuapi_DsGetNCChangesUsnTriple usn1
;
324 drsuapi_DsGetNCChangesUsnTriple usn2
;
325 drsuapi_DsReplicaCoursorEx05Ctr
*coursor_ex
;
326 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
333 } drsuapi_DsGetNCChangesCtr6
;
336 uint32 u1
;/* decompressed_length ? */
337 uint32 compressed_length
;
338 DATA_BLOB
*compressed
;
339 } drsuapi_DsGetNCChangesCtr7CompressedInfo
;
343 uint16 u2
; /* enum */
344 drsuapi_DsGetNCChangesCtr7CompressedInfo info
;
345 } drsuapi_DsGetNCChangesCtr7
;
347 typedef [switch_type(int32
)] union {
348 [case(1)] drsuapi_DsGetNCChangesCtr1 ctr1
;
349 [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6
;
350 [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7
;
351 } drsuapi_DsGetNCChangesCtr
;
353 WERROR drsuapi_DsGetNCChanges
(
354 [in,ref] policy_handle
*bind_handle
,
355 [in,out] int32 level
,
356 [in,switch_is(level
)] drsuapi_DsGetNCChangesRequest req
,
357 [out,switch_is(level
)] drsuapi_DsGetNCChangesCtr ctr
363 DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION
= 0x00000001,
364 DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE
= 0x00000002,
365 DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE
= 0x00000004,
366 DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE
= 0x00000008,
367 DRSUAPI_DS_REPLICA_UPDATE_0x00000010
= 0x00000010
368 } drsuapi_DsReplicaUpdateRefsOptions
;
371 [ref] drsuapi_DsReplicaObjectIdentifier
*naming_context
;
372 [ref] ascstr
*dest_dsa_dns_name
;
374 drsuapi_DsReplicaUpdateRefsOptions options
;
375 } drsuapi_DsReplicaUpdateRefsRequest1
;
377 typedef [switch_type(int32
)] union {
378 [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1
;
379 } drsuapi_DsReplicaUpdateRefsRequest
;
381 WERROR drsuapi_DsReplicaUpdateRefs
(
382 [in,ref] policy_handle
*bind_handle
,
384 [in,switch_is(level
)] drsuapi_DsReplicaUpdateRefsRequest req
390 DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION
= 0x00000001,
391 DRSUAPI_DS_REPLICA_ADD_WRITEABLE
= 0x00000002
393 } drsuapi_DsReplicaAddOptions
;
395 WERROR DRSUAPI_REPLICA_ADD
();
400 DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION
= 0x00000001,
401 DRSUAPI_DS_REPLICA_DELETE_WRITEABLE
= 0x00000002
403 } drsuapi_DsReplicaDeleteOptions
;
405 WERROR DRSUAPI_REPLICA_DEL
();
410 DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION
= 0x00000001,
411 DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE
= 0x00000002
412 } drsuapi_DsReplicaModifyOptions
;
414 WERROR DRSUAPI_REPLICA_MODIFY
();
418 WERROR DRSUAPI_VERIFY_NAMES
();
422 WERROR DRSUAPI_GET_MEMBERSHIPS
();
426 WERROR DRSUAPI_INTER_DOMAIN_MOVE
();
430 WERROR DRSUAPI_GET_NT4_CHANGELOG
();
434 typedef [v1_enum] enum {
435 DRSUAPI_DS_NAME_STATUS_OK
= 0,
436 DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR
= 1,
437 DRSUAPI_DS_NAME_STATUS_NOT_FOUND
= 2,
438 DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE
= 3,
439 DRSUAPI_DS_NAME_STATUS_NO_MAPPING
= 4,
440 DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY
= 5,
441 DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING
= 6,
442 DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL
= 7
443 } drsuapi_DsNameStatus
;
445 typedef [v1_enum] enum {
446 DRSUAPI_DS_NAME_FLAG_NO_FLAGS
= 0x0,
447 DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY
= 0x1,
448 DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC
= 0x2,
449 DRSUAPI_DS_NAME_FLAG_GCVERIFY
= 0x4,
450 DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL
= 0x8
451 } drsuapi_DsNameFlags
;
453 typedef [v1_enum] enum {
454 DRSUAPI_DS_NAME_FORMAT_UKNOWN
= 0,
455 DRSUAPI_DS_NAME_FORMAT_FQDN_1779
= 1,
456 DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT
= 2,
457 DRSUAPI_DS_NAME_FORMAT_DISPLAY
= 3,
458 DRSUAPI_DS_NAME_FORMAT_GUID
= 6,
459 DRSUAPI_DS_NAME_FORMAT_CANONICAL
= 7,
460 DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL
= 8,
461 DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX
= 9,
462 DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL
= 10,
463 DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY
= 11,
464 DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN
= 12
465 } drsuapi_DsNameFormat
;
469 } drsuapi_DsNameString
;
472 uint32 unknown1
; /* 0x000004e4 */
473 uint32 unknown2
; /* 0x00000407 */
474 drsuapi_DsNameFlags format_flags
;
475 drsuapi_DsNameFormat format_offered
;
476 drsuapi_DsNameFormat format_desired
;
477 [range(1,10000)] uint32 count
;
478 [size_is(count
)] drsuapi_DsNameString
*names
[];
479 } drsuapi_DsNameRequest1
;
481 typedef [switch_type(int32
)] union {
482 [case(1)] drsuapi_DsNameRequest1 req1
;
483 } drsuapi_DsNameRequest
;
486 drsuapi_DsNameStatus status
;
487 unistr
*dns_domain_name
;
489 } drsuapi_DsNameInfo1
;
493 [size_is(count
)] drsuapi_DsNameInfo1
*array
[];
494 } drsuapi_DsNameCtr1
;
496 typedef [switch_type(int32
)] union {
497 [case(1)] drsuapi_DsNameCtr1
*ctr1
;
500 WERROR drsuapi_DsCrackNames
(
501 [in,ref] policy_handle
*bind_handle
,
502 [in, out] int32 level
,
503 [in,switch_is(level
)] drsuapi_DsNameRequest req
,
504 [out,switch_is(level
)] drsuapi_DsNameCtr ctr
509 typedef [v1_enum] enum {
510 DRSUAPI_DS_SPN_OPERATION_ADD
= 0,
511 DRSUAPI_DS_SPN_OPERATION_REPLACE
= 1,
512 DRSUAPI_DS_SPN_OPERATION_DELETE
= 2
513 } drsuapi_DsSpnOperation
;
516 drsuapi_DsSpnOperation operation
;
519 [range(0,10000)] uint32 count
;
520 [size_is(count
)] drsuapi_DsNameString
*spn_names
[];
521 } drsuapi_DsWriteAccountSpnRequest1
;
523 typedef [switch_type(int32
)] union {
524 [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1
;
525 } drsuapi_DsWriteAccountSpnRequest
;
529 } drsuapi_DsWriteAccountSpnResult1
;
531 typedef [switch_type(int32
)] union {
532 [case(1)] drsuapi_DsWriteAccountSpnResult1 res1
;
533 } drsuapi_DsWriteAccountSpnResult
;
535 WERROR drsuapi_DsWriteAccountSpn
(
536 [in,ref] policy_handle
*bind_handle
,
537 [in, out] int32 level
,
538 [in,switch_is(level
)] drsuapi_DsWriteAccountSpnRequest req
,
539 [out,switch_is(level
)] drsuapi_DsWriteAccountSpnResult res
544 WERROR DRSUAPI_REMOVE_DS_SERVER
();
548 WERROR DRSUAPI_REMOVE_DS_DOMAIN
();
553 unistr
*domain_name
; /* netbios or dns */
554 int32 level
; /* specifies the switch level for the request */
555 } drsuapi_DsGetDCInfoRequest1
;
557 typedef [switch_type(int32
)] union {
558 [case(1)] drsuapi_DsGetDCInfoRequest1 req1
;
559 } drsuapi_DsGetDCInfoRequest
;
562 unistr
*netbios_name
;
569 } drsuapi_DsGetDCInfo1
;
572 [range(0,10000)] uint32 count
;
573 [size_is(count
)] drsuapi_DsGetDCInfo1
*array
[];
574 } drsuapi_DsGetDCInfoCtr1
;
577 unistr
*netbios_name
;
591 } drsuapi_DsGetDCInfo2
;
594 [range(0,10000)] uint32 count
;
595 [size_is(count
)] drsuapi_DsGetDCInfo2
*array
[];
596 } drsuapi_DsGetDCInfoCtr2
;
605 unistr
*server_nt4_account
;
606 } drsuapi_DsGetDCInfo01
;
609 [range(0,10000)] uint32 count
;
610 [size_is(count
)] drsuapi_DsGetDCInfo01
*array
[];
611 } drsuapi_DsGetDCInfoCtr01
;
613 typedef [v1_enum] enum {
614 DRSUAPI_DC_INFO_CTR_1
= 1,
615 DRSUAPI_DC_INFO_CTR_2
= 2,
616 DRSUAPI_DC_INFO_CTR_01
= -1
617 } drsuapi_DsGetDCInfoCtrLevels
;
619 typedef [switch_type(int32
)] union {
620 [case(DRSUAPI_DC_INFO_CTR_1
)] drsuapi_DsGetDCInfoCtr1 ctr1
;
621 [case(DRSUAPI_DC_INFO_CTR_2
)] drsuapi_DsGetDCInfoCtr2 ctr2
;
622 [case(DRSUAPI_DC_INFO_CTR_01
)] drsuapi_DsGetDCInfoCtr01 ctr01
;
623 } drsuapi_DsGetDCInfoCtr
;
625 WERROR drsuapi_DsGetDomainControllerInfo
(
626 [in,ref] policy_handle
*bind_handle
,
627 [in, out] int32 level
,
628 [in,switch_is(level
)] drsuapi_DsGetDCInfoRequest req
,
629 [out,switch_is(level
)] drsuapi_DsGetDCInfoCtr ctr
634 WERROR drsuapi_DsAddEntry
();
638 WERROR DRSUAPI_EXECUTE_KCC
();
642 typedef [v1_enum] enum {
643 DRSUAPI_DS_REPLICA_GET_INFO
= 1,
644 DRSUAPI_DS_REPLICA_GET_INFO2
= 2
645 } drsuapi_DsReplicaGetInfoLevel
;
647 typedef [v1_enum] enum {
648 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
= 0,
649 DRSUAPI_DS_REPLICA_INFO_CURSORS
= 1,
650 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
= 2,
651 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
= 3,
652 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
= 4,
653 DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
= 5,
654 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
= 6,
655 DRSUAPI_DS_REPLICA_INFO_CURSORS2
= 7,
656 DRSUAPI_DS_REPLICA_INFO_CURSORS3
= 8,
657 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
= 9,
658 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
= 10,
659 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
= -2,
660 DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
= -4,
661 DRSUAPI_DS_REPLICA_INFO_CURSURS05
= -5,
662 DRSUAPI_DS_REPLICA_INFO_06
= -6
663 } drsuapi_DsReplicaInfoType
;
666 drsuapi_DsReplicaInfoType info_type
;
669 } drsuapi_DsReplicaGetInfoRequest1
;
672 drsuapi_DsReplicaInfoType info_type
;
679 } drsuapi_DsReplicaGetInfoRequest2
;
681 typedef [switch_type(drsuapi_DsReplicaGetInfoLevel
)] union {
682 [case(DRSUAPI_DS_REPLICA_GET_INFO
)] drsuapi_DsReplicaGetInfoRequest1 req1
;
683 [case(DRSUAPI_DS_REPLICA_GET_INFO2
)] drsuapi_DsReplicaGetInfoRequest2 req2
;
684 } drsuapi_DsReplicaGetInfoRequest
;
687 unistr
*naming_context_dn
;
688 unistr
*source_dsa_obj_dn
;
689 unistr
*source_dsa_address
;
690 unistr
*transport_obj_dn
;
691 uint32 replica_flags
;
693 GUID naming_context_obj_guid
;
694 GUID source_dsa_obj_guid
;
695 GUID source_dsa_invocation_id
;
696 GUID transport_obj_guid
;
697 hyper tmp_highest_usn
;
701 WERROR result_last_attempt
;
702 uint32 consecutive_sync_failures
;
703 } drsuapi_DsReplicaNeighbour
;
708 [size_is(count
)] drsuapi_DsReplicaNeighbour array
[];
709 } drsuapi_DsReplicaNeighbourCtr
;
714 [size_is(count
)] drsuapi_DsReplicaCoursor array
[];
715 } drsuapi_DsReplicaCoursorCtr
;
718 unistr
*attribute_name
;
720 NTTIME originating_last_changed
;
721 GUID originating_dsa_invocation_id
;
722 hyper originating_usn
;
724 } drsuapi_DsReplicaObjMetaData
;
729 [size_is(count
)] drsuapi_DsReplicaObjMetaData array
[];
730 } drsuapi_DsReplicaObjMetaDataCtr
;
735 NTTIME first_failure
;
738 } drsuapi_DsReplicaKccDsaFailure
;
743 [size_is(count
)] drsuapi_DsReplicaKccDsaFailure array
[];
744 } drsuapi_DsReplicaKccDsaFailuresCtr
;
747 DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
= 0,
748 DRSUAPI_DS_REPLICA_OP_TYPE_ADD
= 1,
749 DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
= 2,
750 DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
= 3,
751 DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
= 4
752 } drsuapi_DsReplicaOpType
;
754 typedef [switch_type(drsuapi_DsReplicaOpType
)] union {
755 [case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
)] drsuapi_DsReplicaSyncOptions sync
;
756 [case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD
)] drsuapi_DsReplicaAddOptions add
;
757 [case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
)] drsuapi_DsReplicaDeleteOptions delete
;
758 [case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
)] drsuapi_DsReplicaModifyOptions modify
;
759 [case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
)] drsuapi_DsReplicaUpdateRefsOptions update_refs
;
760 [default] uint32 unknown
;
761 } drsuapi_DsRplicaOpOptions
;
764 NTTIME operation_start
;
765 uint32 serial_num
; /* unique till reboot */
767 drsuapi_DsReplicaOpType operation_type
;
768 [switch_is(operation_type
)] drsuapi_DsRplicaOpOptions options
;
770 unistr
*remote_dsa_obj_dn
;
771 unistr
*remote_dsa_address
;
773 GUID remote_dsa_obj_guid
;
774 } drsuapi_DsReplicaOp
;
779 [size_is(count
)] drsuapi_DsReplicaOp array
[];
780 } drsuapi_DsReplicaOpCtr
;
783 unistr
*attribute_name
;
786 [size_is(value_length
)] uint8
*value
[];
790 NTTIME originating_last_changed
;
791 GUID originating_dsa_invocation_id
;
792 hyper originating_usn
;
794 } drsuapi_DsReplicaAttrValMetaData
;
798 int32 enumeration_context
;
799 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData array
[];
800 } drsuapi_DsReplicaAttrValMetaDataCtr
;
803 GUID source_dsa_invocation_id
;
805 NTTIME last_sync_success
;
806 } drsuapi_DsReplicaCoursor2
;
810 int32 enumeration_context
;
811 [size_is(count
)] drsuapi_DsReplicaCoursor2 array
[];
812 } drsuapi_DsReplicaCoursor2Ctr
;
815 GUID source_dsa_invocation_id
;
817 NTTIME last_sync_success
;
818 unistr
*source_dsa_obj_dn
;
819 } drsuapi_DsReplicaCoursor3
;
823 int32 enumeration_context
;
824 [size_is(count
)] drsuapi_DsReplicaCoursor3 array
[];
825 } drsuapi_DsReplicaCoursor3Ctr
;
828 unistr
*attribute_name
;
830 NTTIME originating_last_changed
;
831 GUID originating_dsa_invocation_id
;
832 hyper originating_usn
;
834 unistr
*originating_dsa_obj_dn
;
835 } drsuapi_DsReplicaObjMetaData2
;
839 int32 enumeration_context
;
840 [size_is(count
)] drsuapi_DsReplicaObjMetaData2 array
[];
841 } drsuapi_DsReplicaObjMetaData2Ctr
;
844 unistr
*attribute_name
;
847 [size_is(value_length
)] uint8
*value
[];
851 NTTIME originating_last_changed
;
852 GUID originating_dsa_invocation_id
;
853 hyper originating_usn
;
855 unistr
*originating_dsa_obj_dn
;
856 } drsuapi_DsReplicaAttrValMetaData2
;
860 int32 enumeration_context
;
861 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData2 array
[];
862 } drsuapi_DsReplicaAttrValMetaData2Ctr
;
865 hyper u1
; /* session number? */
869 NTTIME_1sec bind_time
;
870 uint32 u4
; /* flags? */
872 } drsuapi_DsReplicaConnection04
;
875 [range(0,10000)] uint32 count
;
877 [size_is(count
)] drsuapi_DsReplicaConnection04 array
[];
878 } drsuapi_DsReplicaConnection04Ctr
;
889 } drsuapi_DsReplica06
;
892 [range(0,256)] uint32 count
;
894 [size_is(count
)] drsuapi_DsReplica06 array
[];
895 } drsuapi_DsReplica06Ctr
;
897 typedef [switch_type(drsuapi_DsReplicaInfoType
)] union {
898 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
)] drsuapi_DsReplicaNeighbourCtr
*neighbours
;
899 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS
)] drsuapi_DsReplicaCoursorCtr
*coursors
;
900 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
)] drsuapi_DsReplicaObjMetaDataCtr
*objmetadata
;
901 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*connectfailures
;
902 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*linkfailures
;
903 [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
)] drsuapi_DsReplicaOpCtr
*pendingops
;
904 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
)] drsuapi_DsReplicaAttrValMetaDataCtr
*attrvalmetadata
;
905 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2
)] drsuapi_DsReplicaCoursor2Ctr
*coursors2
;
906 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3
)] drsuapi_DsReplicaCoursor3Ctr
*coursors3
;
907 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
)] drsuapi_DsReplicaObjMetaData2Ctr
*objmetadata2
;
908 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
)] drsuapi_DsReplicaAttrValMetaData2Ctr
*attrvalmetadata2
;
909 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
)] drsuapi_DsReplicaNeighbourCtr
*neighbours02
;
910 [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
)] drsuapi_DsReplicaConnection04Ctr
*connections04
;
911 [case(DRSUAPI_DS_REPLICA_INFO_CURSURS05
)] drsuapi_DsReplicaCoursor05Ctr
*coursors05
;
912 [case(DRSUAPI_DS_REPLICA_INFO_06
)] drsuapi_DsReplica06Ctr
*i06
;
913 } drsuapi_DsReplicaInfo
;
915 WERROR drsuapi_DsReplicaGetInfo
(
916 [in,ref] policy_handle
*bind_handle
,
917 [in] drsuapi_DsReplicaGetInfoLevel level
,
918 [in,switch_is(level
)] drsuapi_DsReplicaGetInfoRequest req
,
919 [out] drsuapi_DsReplicaInfoType info_type
,
920 [out,switch_is(info_type
)] drsuapi_DsReplicaInfo info
925 WERROR DRSUAPI_ADD_SID_HISTORY
();
929 WERROR DRSUAPI_GET_MEMBERSHIPS2
();
933 WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS
();
937 WERROR DRSUAPI_GET_OBJECT_EXISTENCE
();
941 WERROR DRSUAPI_QUERY_SITES_BY_COST
();