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 typedef [bitmap32bit
] bitmap
{
57 DRSUAPI_SUPPORTED_EXTENSION_ADAM
= 0x00000001,
58 DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2
= 0x00000002
59 } drsuapi_SupportedExtensionsExt
;
61 /* this is used by w2k */
63 drsuapi_SupportedExtensions supported_extensions
;
66 } drsuapi_DsBindInfo24
;
68 /* this is used by w2k3 */
70 drsuapi_SupportedExtensions supported_extensions
;
74 } drsuapi_DsBindInfo28
;
76 /* this is used by w2k8 */
78 drsuapi_SupportedExtensions supported_extensions
;
82 drsuapi_SupportedExtensionsExt supported_extensions_ext
;
84 } drsuapi_DsBindInfo48
;
88 [flag(NDR_REMAINING)] DATA_BLOB info;
89 } drsuapi_DsBindInfoFallBack;
92 typedef [switch_type(uint32
)] union {
93 [case(24)] drsuapi_DsBindInfo24 info24
;
94 [case(28)] drsuapi_DsBindInfo28 info28
;
95 [case(48)] drsuapi_DsBindInfo48 info48
;
96 /* [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack;*/
99 /* the drsuapi_DsBindInfoCtr was this before
100 * typedef [flag(NDR_PAHEX)] struct {
101 * [range(1,10000)] uint32 length;
102 * [size_is(length)] uint8 data[];
103 * } drsuapi_DsBindInfo;
105 * but we don't want the caller to manually decode this blob,
106 * so we're doing it here
110 [range(1,10000)] uint32 length
;
111 [switch_is(length
)] drsuapi_DsBindInfo info
;
112 } drsuapi_DsBindInfoCtr
;
114 /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
116 * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
118 const char *DRSUAPI_DS_BIND_GUID
= "e24d201a-4fd6-11d1-a3da-0000f875ae0d";
120 * this magic guid are needed to fetch the whole tree with drsuapi_DsGetNCChanges()
121 * as administrator and this values are also used in the destination_dsa_guid field
122 * of drsuapi_DsGetNCChangesReq5/8 and the source_dsa_guid is zero.
124 const char *DRSUAPI_DS_BIND_GUID_W2K
= "6abec3d1-3054-41c8-a362-5a0c5b7d5d71";
125 const char *DRSUAPI_DS_BIND_GUID_W2K3
= "6afab99c-6e26-464a-975f-f58f105218bc";
127 [public] WERROR drsuapi_DsBind
(
128 [in,unique] GUID
*bind_guid
,
129 [in,out,unique] drsuapi_DsBindInfoCtr
*bind_info
,
130 [out] policy_handle
*bind_handle
135 WERROR drsuapi_DsUnbind
(
136 [in,out,ref] policy_handle
*bind_handle
145 uint8 byte_array
[28];
147 [size_is(str_len
+1)] uint16 nc_dn
[];
148 } drsuapi_DsReplicaSyncRequest1Info
;
151 DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION
= 0x00000001,
152 DRSUAPI_DS_REPLICA_SYNC_WRITEABLE
= 0x00000002,
153 DRSUAPI_DS_REPLICA_SYNC_PERIODIC
= 0x00000004,
154 DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING
= 0x00000008,
155 DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES
= 0x00000010,
156 DRSUAPI_DS_REPLICA_SYNC_FULL
= 0x00000020,
157 DRSUAPI_DS_REPLICA_SYNC_URGENT
= 0x00000040,
158 DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD
= 0x00000080,
159 DRSUAPI_DS_REPLICA_SYNC_FORCE
= 0x00000100,
160 DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE
= 0x00000200,
161 DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED
= 0x00000400,
162 DRSUAPI_DS_REPLICA_SYNC_TWO_WAY
= 0x00000800,
163 DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY
= 0x00001000,
164 DRSUAPI_DS_REPLICA_SYNC_INITIAL
= 0x00002000,
165 DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION
= 0x00004000,
166 DRSUAPI_DS_REPLICA_SYNC_ABANDONED
= 0x00008000,
167 DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS
= 0x00010000,
168 DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET
= 0x00020000,
169 DRSUAPI_DS_REPLICA_SYNC_REQUEUE
= 0x00040000,
170 DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION
= 0x00080000,
171 DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA
= 0x00100000,
172 DRSUAPI_DS_REPLICA_SYNC_CRITICAL
= 0x00200000,
173 DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS
= 0x00400000,
174 DRSUAPI_DS_REPLICA_SYNC_PREEMPTED
= 0x00800000
175 } drsuapi_DsReplicaSyncOptions
;
178 [ref] drsuapi_DsReplicaSyncRequest1Info
*info
;
179 GUID source_dsa_guid
;
180 [ref,charset
(DOS
),string] uint8
*other_info
; /* I assume this is related to the repsFromTo1OtherInfo dns_name */
181 drsuapi_DsReplicaSyncOptions options
;
182 } drsuapi_DsReplicaSyncRequest1
;
184 typedef [switch_type(uint32
)] union {
185 [case(1)] drsuapi_DsReplicaSyncRequest1 req1
;
186 } drsuapi_DsReplicaSyncRequest
;
188 WERROR drsuapi_DsReplicaSync
(
189 [in,ref] policy_handle
*bind_handle
,
191 [in,switch_is(level
),ref] drsuapi_DsReplicaSyncRequest
*req
200 } drsuapi_DsGetNCChangesUsnTriple
;
203 GUID source_dsa_invocation_id
;
205 } drsuapi_DsReplicaCursor
;
210 [range(0,0x100000)] uint32 count
;
212 [size_is(count
)] drsuapi_DsReplicaCursor array
[];
213 } drsuapi_DsReplicaCursor05Ctr
;
218 [ref] drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
219 drsuapi_DsGetNCChangesUsnTriple usn1
;
220 drsuapi_DsReplicaCursor05Ctr
*coursor
;
226 } drsuapi_DsGetNCChangesRequest5
;
228 typedef [flag
(NDR_PAHEX
)] struct {
229 [range(0,10000)] uint32 length
;
230 [size_is(length
)] uint8
*byte_array
[];
231 } drsuapi_DsGetNCChangesRequest_Ctr14
;
235 drsuapi_DsGetNCChangesRequest_Ctr14 data
;
236 } drsuapi_DsGetNCChangesRequest_Ctr13
;
239 [range(0,0x100000)] uint32 count
;
240 [size_is(count
)] drsuapi_DsGetNCChangesRequest_Ctr13
*array
[];
241 } drsuapi_DsGetNCChangesRequest_Ctr12
;
246 [ref] drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
247 drsuapi_DsGetNCChangesUsnTriple usn1
;
248 drsuapi_DsReplicaCursor05Ctr
*coursor
;
256 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
257 } drsuapi_DsGetNCChangesRequest8
;
259 typedef [switch_type(uint32
)] union {
260 [case(5)] drsuapi_DsGetNCChangesRequest5 req5
;
261 [case(8)] drsuapi_DsGetNCChangesRequest8 req8
;
262 } drsuapi_DsGetNCChangesRequest
;
265 drsuapi_DsReplicaCursor coursor
;
267 } drsuapi_DsReplicaCursorEx
;
272 [range(0,0x100000)] uint32 count
;
274 [size_is(count
)] drsuapi_DsReplicaCursorEx array
[];
275 } drsuapi_DsReplicaCursorEx05Ctr
;
280 drsuapi_DsReplicaSyncRequest1Info
*sync_req_info1
;
281 drsuapi_DsGetNCChangesUsnTriple usn1
;
282 drsuapi_DsGetNCChangesUsnTriple usn2
;
283 drsuapi_DsReplicaCursorEx05Ctr
*coursor_ex
;
284 drsuapi_DsGetNCChangesRequest_Ctr12 ctr12
;
291 } drsuapi_DsGetNCChangesCtr6
;
294 } drsuapi_DsGetNCChangesCtr7;
296 typedef [switch_type(uint32
)] union {
297 [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6
;
298 /* [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7;*/
299 } drsuapi_DsGetNCChangesCtr
;
301 WERROR drsuapi_DsGetNCChanges
(
302 [in,ref] policy_handle
*bind_handle
,
304 [in,ref,switch_is(level
)] drsuapi_DsGetNCChangesRequest
*req
,
305 [out,ref] uint32
*level_out
,
306 [out,ref,switch_is(*level_out
)] drsuapi_DsGetNCChangesCtr
*ctr
314 typedef [public,gensize
] struct {
315 [value
(ndr_size_drsuapi_DsReplicaObjectIdentifier
(r
, ndr
->iconv_convenience
, ndr
->flags
)-4)] uint32 __ndr_size
;
316 [value
(ndr_size_dom_sid28
(&sid
, ndr
->flags
))] uint32 __ndr_size_sid
;
319 [value
(strlen_m
(dn
))] uint32 __ndr_size_dn
;
320 [charset
(UTF16
),size_is(__ndr_size_dn
+1)] uint16 dn
[];
321 } drsuapi_DsReplicaObjectIdentifier
;
324 DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION
= 0x00000001,
325 DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK
= 0x00000002,
326 DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE
= 0x00000004,
327 DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE
= 0x00000008,
328 DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE
= 0x00000010
329 } drsuapi_DsReplicaUpdateRefsOptions
;
332 [ref] drsuapi_DsReplicaObjectIdentifier
*naming_context
;
333 [ref,charset
(DOS
),string] uint8
*dest_dsa_dns_name
;
335 drsuapi_DsReplicaUpdateRefsOptions options
;
336 } drsuapi_DsReplicaUpdateRefsRequest1
;
338 typedef [switch_type(uint32
)] union {
339 [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1
;
340 } drsuapi_DsReplicaUpdateRefsRequest
;
342 WERROR drsuapi_DsReplicaUpdateRefs
(
343 [in,ref] policy_handle
*bind_handle
,
345 [in,switch_is(level
)] drsuapi_DsReplicaUpdateRefsRequest req
351 DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION
= 0x00000001,
352 DRSUAPI_DS_REPLICA_ADD_WRITEABLE
= 0x00000002
354 } drsuapi_DsReplicaAddOptions
;
356 WERROR DRSUAPI_REPLICA_ADD
();
361 DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION
= 0x00000001,
362 DRSUAPI_DS_REPLICA_DELETE_WRITEABLE
= 0x00000002
364 } drsuapi_DsReplicaDeleteOptions
;
366 WERROR DRSUAPI_REPLICA_DEL
();
371 DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION
= 0x00000001,
372 DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE
= 0x00000002
373 } drsuapi_DsReplicaModifyOptions
;
375 WERROR DRSUAPI_REPLICA_MODIFY
();
379 WERROR DRSUAPI_VERIFY_NAMES
();
383 WERROR DRSUAPI_GET_MEMBERSHIPS
();
387 WERROR DRSUAPI_INTER_DOMAIN_MOVE
();
391 WERROR DRSUAPI_GET_NT4_CHANGELOG
();
395 typedef [v1_enum] enum {
396 DRSUAPI_DS_NAME_STATUS_OK
= 0,
397 DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR
= 1,
398 DRSUAPI_DS_NAME_STATUS_NOT_FOUND
= 2,
399 DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE
= 3,
400 DRSUAPI_DS_NAME_STATUS_NO_MAPPING
= 4,
401 DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY
= 5,
402 DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING
= 6,
403 DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL
= 7
404 } drsuapi_DsNameStatus
;
406 typedef [v1_enum] enum {
407 DRSUAPI_DS_NAME_FLAG_NO_FLAGS
= 0x0,
408 DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY
= 0x1,
409 DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC
= 0x2,
410 DRSUAPI_DS_NAME_FLAG_GCVERIFY
= 0x4,
411 DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL
= 0x8
412 } drsuapi_DsNameFlags
;
414 typedef [v1_enum] enum {
415 DRSUAPI_DS_NAME_FORMAT_UKNOWN
= 0,
416 DRSUAPI_DS_NAME_FORMAT_FQDN_1779
= 1,
417 DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT
= 2,
418 DRSUAPI_DS_NAME_FORMAT_DISPLAY
= 3,
419 DRSUAPI_DS_NAME_FORMAT_GUID
= 6,
420 DRSUAPI_DS_NAME_FORMAT_CANONICAL
= 7,
421 DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL
= 8,
422 DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX
= 9,
423 DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL
= 10,
424 DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY
= 11,
425 DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN
= 12
426 } drsuapi_DsNameFormat
;
429 [string,charset
(UTF16
)] uint16
*str
;
430 } drsuapi_DsNameString
;
433 uint32 unknown1
; /* 0x000004e4 */
434 uint32 unknown2
; /* 0x00000407 */
435 drsuapi_DsNameFlags format_flags
;
436 drsuapi_DsNameFormat format_offered
;
437 drsuapi_DsNameFormat format_desired
;
438 [range(1,10000)] uint32 count
;
439 [size_is(count
)] drsuapi_DsNameString
*names
[];
440 } drsuapi_DsNameRequest1
;
442 typedef [switch_type(uint32
)] union {
443 [case(1)] drsuapi_DsNameRequest1 req1
;
444 } drsuapi_DsNameRequest
;
447 drsuapi_DsNameStatus status
;
448 [charset
(UTF16
),string] uint16
*dns_domain_name
;
449 [charset
(UTF16
),string] uint16
*result_name
;
450 } drsuapi_DsNameInfo1
;
454 [size_is(count
)] drsuapi_DsNameInfo1
*array
[];
455 } drsuapi_DsNameCtr1
;
457 typedef [switch_type(uint32
)] union {
458 [case(1)] drsuapi_DsNameCtr1
*ctr1
;
461 WERROR drsuapi_DsCrackNames
(
462 [in,ref] policy_handle
*bind_handle
,
464 [in,ref,switch_is(level
)] drsuapi_DsNameRequest
*req
,
465 [out,ref] uint32
*level_out
,
466 [out,ref,switch_is(*level_out
)] drsuapi_DsNameCtr
*ctr
471 typedef [v1_enum] enum {
472 DRSUAPI_DS_SPN_OPERATION_ADD
= 0,
473 DRSUAPI_DS_SPN_OPERATION_REPLACE
= 1,
474 DRSUAPI_DS_SPN_OPERATION_DELETE
= 2
475 } drsuapi_DsSpnOperation
;
478 drsuapi_DsSpnOperation operation
;
480 [charset
(UTF16
),string] uint16
*object_dn
;
481 [range(0,10000)] uint32 count
;
482 [size_is(count
)] drsuapi_DsNameString
*spn_names
;
483 } drsuapi_DsWriteAccountSpnRequest1
;
485 typedef [switch_type(uint32
)] union {
486 [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1
;
487 } drsuapi_DsWriteAccountSpnRequest
;
491 } drsuapi_DsWriteAccountSpnResult1
;
493 typedef [switch_type(uint32
)] union {
494 [case(1)] drsuapi_DsWriteAccountSpnResult1 res1
;
495 } drsuapi_DsWriteAccountSpnResult
;
497 WERROR drsuapi_DsWriteAccountSpn
(
498 [in,ref] policy_handle
*bind_handle
,
500 [in,ref,switch_is(level
)] drsuapi_DsWriteAccountSpnRequest
*req
,
501 [out,ref] uint32
*level_out
,
502 [out,ref,switch_is(*level_out
)] drsuapi_DsWriteAccountSpnResult
*res
507 WERROR DRSUAPI_REMOVE_DS_SERVER
();
511 WERROR DRSUAPI_REMOVE_DS_DOMAIN
();
516 [charset
(UTF16
),string] uint16
*domain_name
; /* netbios or dns */
517 int32 level
; /* specifies the switch level for the request */
518 } drsuapi_DsGetDCInfoRequest1
;
520 typedef [switch_type(uint32
)] union {
521 [case(1)] drsuapi_DsGetDCInfoRequest1 req1
;
522 } drsuapi_DsGetDCInfoRequest
;
525 [charset
(UTF16
),string] uint16
*netbios_name
;
526 [charset
(UTF16
),string] uint16
*dns_name
;
527 [charset
(UTF16
),string] uint16
*site_name
;
528 [charset
(UTF16
),string] uint16
*computer_dn
;
529 [charset
(UTF16
),string] uint16
*server_dn
;
532 } drsuapi_DsGetDCInfo1
;
535 [range(0,10000)] uint32 count
;
536 [size_is(count
)] drsuapi_DsGetDCInfo1
*array
[];
537 } drsuapi_DsGetDCInfoCtr1
;
540 [charset
(UTF16
),string] uint16
*netbios_name
;
541 [charset
(UTF16
),string] uint16
*dns_name
;
542 [charset
(UTF16
),string] uint16
*site_name
;
543 [charset
(UTF16
),string] uint16
*site_dn
;
544 [charset
(UTF16
),string] uint16
*computer_dn
;
545 [charset
(UTF16
),string] uint16
*server_dn
;
546 [charset
(UTF16
),string] uint16
*ntds_dn
;
554 } drsuapi_DsGetDCInfo2
;
557 [range(0,10000)] uint32 count
;
558 [size_is(count
)] drsuapi_DsGetDCInfo2
*array
[];
559 } drsuapi_DsGetDCInfoCtr2
;
568 [charset
(UTF16
),string] uint16
*server_nt4_account
;
569 } drsuapi_DsGetDCInfo01
;
572 [range(0,10000)] uint32 count
;
573 [size_is(count
)] drsuapi_DsGetDCInfo01
*array
[];
574 } drsuapi_DsGetDCInfoCtr01
;
576 typedef [v1_enum] enum {
577 DRSUAPI_DC_INFO_CTR_1
= 1,
578 DRSUAPI_DC_INFO_CTR_2
= 2,
579 DRSUAPI_DC_INFO_CTR_01
= -1
580 } drsuapi_DsGetDCInfoCtrLevels
;
582 typedef [switch_type(uint32
)] union {
583 [case(DRSUAPI_DC_INFO_CTR_1
)] drsuapi_DsGetDCInfoCtr1 ctr1
;
584 [case(DRSUAPI_DC_INFO_CTR_2
)] drsuapi_DsGetDCInfoCtr2 ctr2
;
585 [case(DRSUAPI_DC_INFO_CTR_01
)] drsuapi_DsGetDCInfoCtr01 ctr01
;
586 } drsuapi_DsGetDCInfoCtr
;
588 WERROR drsuapi_DsGetDomainControllerInfo
(
589 [in,ref] policy_handle
*bind_handle
,
591 [in,ref,switch_is(level
)] drsuapi_DsGetDCInfoRequest
*req
,
592 [out,ref] uint32
*level_out
,
593 [out,ref,switch_is(*level_out
)] drsuapi_DsGetDCInfoCtr
*ctr
598 WERROR drsuapi_DsAddEntry
();
603 DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION
= 0x00000001,
604 DRSUAPI_DS_EXECUTE_KCC_DAMPED
= 0x00000002
605 } drsuapi_DsExecuteKCCFlags
;
609 drsuapi_DsExecuteKCCFlags flags
;
610 } drsuapi_DsExecuteKCC1
;
612 typedef [switch_type(uint32
)] union {
613 [case(1)] drsuapi_DsExecuteKCC1 ctr1
;
614 } drsuapi_DsExecuteKCCRequest
;
616 WERROR drsuapi_DsExecuteKCC
(
617 [in] policy_handle
*bind_handle
,
619 [in, ref, switch_is(level
)] drsuapi_DsExecuteKCCRequest
*req
624 typedef [v1_enum] enum {
625 DRSUAPI_DS_REPLICA_GET_INFO
= 1,
626 DRSUAPI_DS_REPLICA_GET_INFO2
= 2
627 } drsuapi_DsReplicaGetInfoLevel
;
629 typedef [v1_enum] enum {
630 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
= 0,
631 DRSUAPI_DS_REPLICA_INFO_CURSORS
= 1,
632 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
= 2,
633 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
= 3,
634 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
= 4,
635 DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
= 5,
636 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
= 6,
637 DRSUAPI_DS_REPLICA_INFO_CURSORS2
= 7,
638 DRSUAPI_DS_REPLICA_INFO_CURSORS3
= 8,
639 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
= 9,
640 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
= 10,
641 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
= -2,
642 DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
= -4,
643 DRSUAPI_DS_REPLICA_INFO_CURSURS05
= -5,
644 DRSUAPI_DS_REPLICA_INFO_06
= -6
645 } drsuapi_DsReplicaInfoType
;
648 drsuapi_DsReplicaInfoType info_type
;
649 [charset
(UTF16
),string] uint16
*object_dn
;
651 } drsuapi_DsReplicaGetInfoRequest1
;
654 drsuapi_DsReplicaInfoType info_type
;
655 [charset
(UTF16
),string] uint16
*object_dn
;
658 [charset
(UTF16
),string] uint16
*string1
;
659 [charset
(UTF16
),string] uint16
*string2
;
661 } drsuapi_DsReplicaGetInfoRequest2
;
663 typedef [switch_type(drsuapi_DsReplicaGetInfoLevel
)] union {
664 [case(DRSUAPI_DS_REPLICA_GET_INFO
)] drsuapi_DsReplicaGetInfoRequest1 req1
;
665 [case(DRSUAPI_DS_REPLICA_GET_INFO2
)] drsuapi_DsReplicaGetInfoRequest2 req2
;
666 } drsuapi_DsReplicaGetInfoRequest
;
669 [charset
(UTF16
),string] uint16
*naming_context_dn
;
670 [charset
(UTF16
),string] uint16
*source_dsa_obj_dn
;
671 [charset
(UTF16
),string] uint16
*source_dsa_address
;
672 [charset
(UTF16
),string] uint16
*transport_obj_dn
;
673 uint32 replica_flags
;
675 GUID naming_context_obj_guid
;
676 GUID source_dsa_obj_guid
;
677 GUID source_dsa_invocation_id
;
678 GUID transport_obj_guid
;
679 uint64 tmp_highest_usn
;
683 WERROR result_last_attempt
;
684 uint32 consecutive_sync_failures
;
685 } drsuapi_DsReplicaNeighbour
;
690 [size_is(count
)] drsuapi_DsReplicaNeighbour array
[];
691 } drsuapi_DsReplicaNeighbourCtr
;
696 [size_is(count
)] drsuapi_DsReplicaCursor array
[];
697 } drsuapi_DsReplicaCursorCtr
;
700 [charset
(UTF16
),string] uint16
*attribute_name
;
702 NTTIME originating_last_changed
;
703 GUID originating_dsa_invocation_id
;
704 uint64 originating_usn
;
706 } drsuapi_DsReplicaObjMetaData
;
711 [size_is(count
)] drsuapi_DsReplicaObjMetaData array
[];
712 } drsuapi_DsReplicaObjMetaDataCtr
;
715 [charset
(UTF16
),string] uint16
*dsa_obj_dn
;
717 NTTIME first_failure
;
720 } drsuapi_DsReplicaKccDsaFailure
;
725 [size_is(count
)] drsuapi_DsReplicaKccDsaFailure array
[];
726 } drsuapi_DsReplicaKccDsaFailuresCtr
;
729 DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
= 0,
730 DRSUAPI_DS_REPLICA_OP_TYPE_ADD
= 1,
731 DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
= 2,
732 DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
= 3,
733 DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
= 4
734 } drsuapi_DsReplicaOpType
;
736 typedef [switch_type(drsuapi_DsReplicaOpType
)] union {
737 [case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC
)] drsuapi_DsReplicaSyncOptions sync
;
738 [case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD
)] drsuapi_DsReplicaAddOptions add
;
739 [case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE
)] drsuapi_DsReplicaDeleteOptions delete
;
740 [case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY
)] drsuapi_DsReplicaModifyOptions modify
;
741 [case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS
)] drsuapi_DsReplicaUpdateRefsOptions update_refs
;
742 [default] uint32 unknown
;
743 } drsuapi_DsRplicaOpOptions
;
746 NTTIME operation_start
;
747 uint32 serial_num
; /* unique till reboot */
749 drsuapi_DsReplicaOpType operation_type
;
750 [switch_is(operation_type
)] drsuapi_DsRplicaOpOptions options
;
751 [charset
(UTF16
),string] uint16
*nc_dn
;
752 [charset
(UTF16
),string] uint16
*remote_dsa_obj_dn
;
753 [charset
(UTF16
),string] uint16
*remote_dsa_address
;
755 GUID remote_dsa_obj_guid
;
756 } drsuapi_DsReplicaOp
;
761 [size_is(count
)] drsuapi_DsReplicaOp array
[];
762 } drsuapi_DsReplicaOpCtr
;
765 [charset
(UTF16
),string] uint16
*attribute_name
;
766 [charset
(UTF16
),string] uint16
*object_dn
;
768 [size_is(value_length
)] uint8
*value
[];
772 NTTIME originating_last_changed
;
773 GUID originating_dsa_invocation_id
;
774 uint64 originating_usn
;
776 } drsuapi_DsReplicaAttrValMetaData
;
780 int32 enumeration_context
;
781 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData array
[];
782 } drsuapi_DsReplicaAttrValMetaDataCtr
;
785 GUID source_dsa_invocation_id
;
787 NTTIME last_sync_success
;
788 } drsuapi_DsReplicaCursor2
;
792 int32 enumeration_context
;
793 [size_is(count
)] drsuapi_DsReplicaCursor2 array
[];
794 } drsuapi_DsReplicaCursor2Ctr
;
797 GUID source_dsa_invocation_id
;
799 NTTIME last_sync_success
;
800 [charset
(UTF16
),string] uint16
*source_dsa_obj_dn
;
801 } drsuapi_DsReplicaCursor3
;
805 int32 enumeration_context
;
806 [size_is(count
)] drsuapi_DsReplicaCursor3 array
[];
807 } drsuapi_DsReplicaCursor3Ctr
;
810 [charset
(UTF16
),string] uint16
*attribute_name
;
812 NTTIME originating_last_changed
;
813 GUID originating_dsa_invocation_id
;
814 uint64 originating_usn
;
816 [charset
(UTF16
),string] uint16
*originating_dsa_obj_dn
;
817 } drsuapi_DsReplicaObjMetaData2
;
821 int32 enumeration_context
;
822 [size_is(count
)] drsuapi_DsReplicaObjMetaData2 array
[];
823 } drsuapi_DsReplicaObjMetaData2Ctr
;
826 [charset
(UTF16
),string] uint16
*attribute_name
;
827 [charset
(UTF16
),string] uint16
*object_dn
;
829 [size_is(value_length
)] uint8
*value
[];
833 NTTIME originating_last_changed
;
834 GUID originating_dsa_invocation_id
;
835 uint64 originating_usn
;
837 [charset
(UTF16
),string] uint16
*originating_dsa_obj_dn
;
838 } drsuapi_DsReplicaAttrValMetaData2
;
842 int32 enumeration_context
;
843 [size_is(count
)] drsuapi_DsReplicaAttrValMetaData2 array
[];
844 } drsuapi_DsReplicaAttrValMetaData2Ctr
;
847 uint64 u1
; /* session number? */
851 NTTIME_1sec bind_time
;
852 uint32 u4
; /* flags? */
854 } drsuapi_DsReplicaConnection04
;
857 [range(0,10000)] uint32 count
;
859 [size_is(count
)] drsuapi_DsReplicaConnection04 array
[];
860 } drsuapi_DsReplicaConnection04Ctr
;
863 [charset
(UTF16
),string] uint16
*str1
;
871 } drsuapi_DsReplica06
;
874 [range(0,256)] uint32 count
;
876 [size_is(count
)] drsuapi_DsReplica06 array
[];
877 } drsuapi_DsReplica06Ctr
;
879 typedef [switch_type(drsuapi_DsReplicaInfoType
)] union {
880 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS
)] drsuapi_DsReplicaNeighbourCtr
*neighbours
;
881 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS
)] drsuapi_DsReplicaCursorCtr
*coursors
;
882 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA
)] drsuapi_DsReplicaObjMetaDataCtr
*objmetadata
;
883 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*connectfailures
;
884 [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES
)] drsuapi_DsReplicaKccDsaFailuresCtr
*linkfailures
;
885 [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS
)] drsuapi_DsReplicaOpCtr
*pendingops
;
886 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA
)] drsuapi_DsReplicaAttrValMetaDataCtr
*attrvalmetadata
;
887 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2
)] drsuapi_DsReplicaCursor2Ctr
*coursors2
;
888 [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3
)] drsuapi_DsReplicaCursor3Ctr
*coursors3
;
889 [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2
)] drsuapi_DsReplicaObjMetaData2Ctr
*objmetadata2
;
890 [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2
)] drsuapi_DsReplicaAttrValMetaData2Ctr
*attrvalmetadata2
;
891 [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02
)] drsuapi_DsReplicaNeighbourCtr
*neighbours02
;
892 [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04
)] drsuapi_DsReplicaConnection04Ctr
*connections04
;
893 [case(DRSUAPI_DS_REPLICA_INFO_CURSURS05
)] drsuapi_DsReplicaCursor05Ctr
*coursors05
;
894 [case(DRSUAPI_DS_REPLICA_INFO_06
)] drsuapi_DsReplica06Ctr
*i06
;
895 } drsuapi_DsReplicaInfo
;
897 WERROR drsuapi_DsReplicaGetInfo
(
898 [in,ref] policy_handle
*bind_handle
,
899 [in] drsuapi_DsReplicaGetInfoLevel level
,
900 [in,ref,switch_is(level
)] drsuapi_DsReplicaGetInfoRequest
*req
,
901 [out,ref] drsuapi_DsReplicaInfoType
*info_type
,
902 [out,ref,switch_is(*info_type
)] drsuapi_DsReplicaInfo
*info
907 WERROR DRSUAPI_ADD_SID_HISTORY
();
911 WERROR DRSUAPI_GET_MEMBERSHIPS2
();
915 WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS
();
919 WERROR DRSUAPI_GET_OBJECT_EXISTENCE
();
923 WERROR DRSUAPI_QUERY_SITES_BY_COST
();