Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
drsuapi.idl
1 #include "idl_types.h"
2 
3 [
4  uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
5  version(4.0),
6  endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]", "ncacn_ip_tcp:", "ncalrpc:"),
7  authservice("ldap"),
8  helpstring("Active Directory Replication"),
9  pointer_default(unique)
10 ]
11 interface drsuapi
12 {
13  /*****************/
14  /* Function 0x00 */
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,
43  /*
44  * the following 3 have the same value
45  * repadmin.exe /bind says that
46  */
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;
55 
56  /* this is used by w2k */
57  typedef struct {
58  drsuapi_SupportedExtensions supported_extensions;
59  GUID site_guid;
60  uint32 u1;
61  } drsuapi_DsBindInfo24;
62 
63  /* this is used by w2k3 */
64  typedef struct {
65  drsuapi_SupportedExtensions supported_extensions;
66  GUID site_guid;
67  uint32 u1;
68  uint32 repl_epoch;
69  } drsuapi_DsBindInfo28;
70 
71 # typedef struct {
72 # [flag(NDR_REMAINING)] DATA_BLOB info;
73 # } drsuapi_DsBindInfoFallBack;
74 
75  typedef union {
76  [case(24)] drsuapi_DsBindInfo24 info24;
77  [case(28)] drsuapi_DsBindInfo28 info28;
78 # [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack;
79  } drsuapi_DsBindInfo;
80 
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;
86  *
87  * but we don't want the caller to manually decode this blob,
88  * so we're doing it here
89  */
90 
91  typedef struct {
92  [range(1,10000)] uint32 length;
93  [switch_is(length)] drsuapi_DsBindInfo info;
94  } drsuapi_DsBindInfoCtr;
95 
96  /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
97  *
98  * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
99  */
100 # const string DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d";
101 
102  WERROR drsuapi_DsBind(
103  [in] GUID *bind_guid,
104  [in,out] drsuapi_DsBindInfoCtr *bind_info,
105  [out,ref] policy_handle *bind_handle
106  );
107 
108  /*****************/
109  /* Function 0x01 */
110  WERROR drsuapi_DsUnbind(
111  [in,out,ref] policy_handle *bind_handle
112  );
113 
114  /*****************/
115  /* Function 0x02 */
116  typedef struct {
117  uint32 unknown1;
118  uint32 unknown2;
119  GUID guid1;
120  uint8 byte_array[28];
121  uint32 str_len;
122  [size_is(str_len+1)] uint32 nc_dn[];
123  } drsuapi_DsReplicaSyncRequest1Info;
124 
125  typedef bitmap {
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;
151 
152  typedef struct {
153  [ref] drsuapi_DsReplicaSyncRequest1Info *info;
154  GUID guid1;
155  a_string *string1;
156  drsuapi_DsReplicaSyncOptions options;
157  } drsuapi_DsReplicaSyncRequest1;
158 
159  typedef [switch_type(int32)] union {
160  [case(1)] drsuapi_DsReplicaSyncRequest1 req1;
161  } drsuapi_DsReplicaSyncRequest;
162 
163  WERROR drsuapi_DsReplicaSync(
164  [in,ref] policy_handle *bind_handle,
165  [in] int32 level,
166  [in,switch_is(level),ref] drsuapi_DsReplicaSyncRequest *req
167  );
168 
169  /*****************/
170  /* Function 0x03 */
171  typedef struct {
172  hyper usn1;
173  hyper usn2;
174  hyper usn3;
175  } drsuapi_DsGetNCChangesUsnTriple;
176 
177  typedef struct {
178  GUID source_dsa_invocation_id;
179  hyper highest_usn;
180  } drsuapi_DsReplicaCoursor;
181 
182  typedef struct {
183  uint32 u1;
184  uint32 u2;
185  [range(0,0x100000)] uint32 count;
186  uint32 u3;
187  [size_is(count)] drsuapi_DsReplicaCoursor array[];
188  } drsuapi_DsReplicaCoursor05Ctr;
189 
190  typedef struct {
191  GUID guid1;
192  GUID guid2;
193  [ref] drsuapi_DsReplicaSyncRequest1Info *sync_req_info1;
194  drsuapi_DsGetNCChangesUsnTriple usn1;
195  drsuapi_DsReplicaCoursor05Ctr *coursor;
196  uint32 unknown1;
197  uint32 unknown2;
198  uint32 unknown3;
199  uint32 unknown4;
200  hyper h1;
201  } drsuapi_DsGetNCChangesRequest5;
202 
203  typedef [flag(NDR_PAHEX)] struct {
204  [range(0,10000)] uint32 length;
205  [size_is(length)] uint8 *byte_array[];
206  } drsuapi_DsGetNCChangesRequest_Ctr14;
207 
208  typedef struct {
209  uint32 unknown1;
210  drsuapi_DsGetNCChangesRequest_Ctr14 data;
211  } drsuapi_DsGetNCChangesRequest_Ctr13;
212 
213  typedef struct {
214  [range(0,0x100000)] uint32 count;
215  [size_is(count)] drsuapi_DsGetNCChangesRequest_Ctr13 *array[];
216  } drsuapi_DsGetNCChangesRequest_Ctr12;
217 
218  typedef struct {
219  GUID guid1;
220  GUID guid2;
221  [ref] drsuapi_DsReplicaSyncRequest1Info *sync_req_info1;
222  drsuapi_DsGetNCChangesUsnTriple usn1;
223  drsuapi_DsReplicaCoursor05Ctr *coursor;
224  uint32 unknown1;
225  uint32 unknown2;
226  uint32 unknown3;
227  uint32 unknown4;
228  hyper h1;
229  uint32 unique_ptr1;
230  uint32 unique_ptr2;
231  drsuapi_DsGetNCChangesRequest_Ctr12 ctr12;
232  } drsuapi_DsGetNCChangesRequest8;
233 
234  typedef [switch_type(int32)] union {
235  [case(5)] drsuapi_DsGetNCChangesRequest5 req5;
236  [case(8)] drsuapi_DsGetNCChangesRequest8 req8;
237  } drsuapi_DsGetNCChangesRequest;
238 
239  typedef struct {
240  drsuapi_DsReplicaCoursor coursor;
241  NTTIME_1sec time1;
242  } drsuapi_DsReplicaCoursorEx;
243 
244  typedef struct {
245  uint32 u1;
246  uint32 u2;
247  [range(0,0x100000)] uint32 count;
248  uint32 u3;
249  [size_is(count)] drsuapi_DsReplicaCoursorEx array[];
250  } drsuapi_DsReplicaCoursorEx05Ctr;
251 
252  typedef struct {
253  GUID guid1;
254  GUID guid2;
255  drsuapi_DsReplicaSyncRequest1Info *sync_req_info1;
256  drsuapi_DsGetNCChangesUsnTriple usn1;
257  drsuapi_DsGetNCChangesUsnTriple usn2;
258  drsuapi_DsReplicaCoursorEx05Ctr *coursor_ex;
259  drsuapi_DsGetNCChangesRequest_Ctr12 ctr12;
260  uint32 u1[3];
261  uint32 ptr1;
262  uint32 u2[3];
263  uint32 len1;
264  uint32 array_ptr1;
265  uint32 u3;
266  } drsuapi_DsGetNCChangesCtr6;
267 
268  typedef struct {
269  } drsuapi_DsGetNCChangesCtr7;
270 
271  typedef [switch_type(int32)] union {
272  [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6;
273  [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7;
274  } drsuapi_DsGetNCChangesCtr;
275 
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
281  );
282 
283  /*****************/
284  /* Function 0x04 */
285  typedef bitmap {
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;
292 
293  typedef struct {
294  uint32 unknown1;
295  uint32 unknown2;
296  GUID dest_dsa_guid;
297  drsuapi_DsReplicaUpdateRefsOptions options;
298  drsuapi_DsReplicaSyncRequest1Info sync_req_info1;
299  ascstr dest_dsa_dns_name;
300  } drsuapi_DsReplicaUpdateRefsRequest1;
301 
302  typedef [switch_type(int32)] union {
303  [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1;
304  } drsuapi_DsReplicaUpdateRefsRequest;
305 
306  WERROR drsuapi_DsReplicaUpdateRefs(
307  [in,ref] policy_handle *bind_handle,
308  [in] int32 level,
309  [in,switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req
310  );
311 
312  /*****************/
313  /* Function 0x05 */
314  typedef bitmap {
315  DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION = 0x00000001,
316  DRSUAPI_DS_REPLICA_ADD_WRITEABLE = 0x00000002
317  /* TODO ... */
318  } drsuapi_DsReplicaAddOptions;
319 
320  WERROR DRSUAPI_REPLICA_ADD();
321 
322  /*****************/
323  /* Function 0x06 */
324  typedef bitmap {
325  DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION = 0x00000001,
326  DRSUAPI_DS_REPLICA_DELETE_WRITEABLE = 0x00000002
327  /* TODO ... */
328  } drsuapi_DsReplicaDeleteOptions;
329 
330  WERROR DRSUAPI_REPLICA_DEL();
331 
332  /*****************/
333  /* Function 0x07 */
334  typedef bitmap {
335  DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION = 0x00000001,
336  DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE = 0x00000002
337  } drsuapi_DsReplicaModifyOptions;
338 
339  WERROR DRSUAPI_REPLICA_MODIFY();
340 
341  /*****************/
342  /* Function 0x08 */
343  WERROR DRSUAPI_VERIFY_NAMES();
344 
345  /*****************/
346  /* Function 0x09 */
347  WERROR DRSUAPI_GET_MEMBERSHIPS();
348 
349  /*****************/
350  /* Function 0x0a */
351  WERROR DRSUAPI_INTER_DOMAIN_MOVE();
352 
353  /*****************/
354  /* Function 0x0b */
355  WERROR DRSUAPI_GET_NT4_CHANGELOG();
356 
357  /*****************/
358  /* Function 0x0c */
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;
369 
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;
377 
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;
391 
392  typedef struct {
393  unistr *str;
394  } drsuapi_DsNameString;
395 
396  typedef struct {
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;
405 
406  typedef [switch_type(int32)] union {
407  [case(1)] drsuapi_DsNameRequest1 req1;
408  } drsuapi_DsNameRequest;
409 
410  typedef struct {
411  drsuapi_DsNameStatus status;
412  unistr *dns_domain_name;
413  unistr *result_name;
414  } drsuapi_DsNameInfo1;
415 
416  typedef struct {
417  uint32 count;
418  [size_is(count)] drsuapi_DsNameInfo1 *array[];
419  } drsuapi_DsNameCtr1;
420 
421  typedef [switch_type(int32)] union {
422  [case(1)] drsuapi_DsNameCtr1 *ctr1;
423  } drsuapi_DsNameCtr;
424 
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
430  );
431 
432  /*****************/
433  /* Function 0x0d */
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;
439 
440  typedef struct {
441  drsuapi_DsSpnOperation operation;
442  uint32 unknown1;
443  unistr *object_dn;
444  [range(0,10000)] uint32 count;
445  [size_is(count)] drsuapi_DsNameString *spn_names[];
446  } drsuapi_DsWriteAccountSpnRequest1;
447 
448  typedef [switch_type(int32)] union {
449  [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1;
450  } drsuapi_DsWriteAccountSpnRequest;
451 
452  typedef struct {
453  WERROR status;
454  } drsuapi_DsWriteAccountSpnResult1;
455 
456  typedef [switch_type(int32)] union {
457  [case(1)] drsuapi_DsWriteAccountSpnResult1 res1;
458  } drsuapi_DsWriteAccountSpnResult;
459 
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
465  );
466 
467  /*****************/
468  /* Function 0x0e */
469  WERROR DRSUAPI_REMOVE_DS_SERVER();
470 
471  /*****************/
472  /* Function 0x0f */
473  WERROR DRSUAPI_REMOVE_DS_DOMAIN();
474 
475  /*****************/
476  /* Function 0x10 */
477  typedef struct {
478  unistr *domain_name; /* netbios or dns */
479  int32 level; /* specifies the switch level for the request */
480  } drsuapi_DsGetDCInfoRequest1;
481 
482  typedef [switch_type(int32)] union {
483  [case(1)] drsuapi_DsGetDCInfoRequest1 req1;
484  } drsuapi_DsGetDCInfoRequest;
485 
486  typedef struct {
487  unistr *netbios_name;
488  unistr *dns_name;
489  unistr *site_name;
490  unistr *computer_dn;
491  unistr *server_dn;
492  uint32 is_pdc;
493  uint32 is_enabled;
494  } drsuapi_DsGetDCInfo1;
495 
496  typedef struct {
497  [range(0,10000)] uint32 count;
498  [size_is(count)] drsuapi_DsGetDCInfo1 *array[];
499  } drsuapi_DsGetDCInfoCtr1;
500 
501  typedef struct {
502  unistr *netbios_name;
503  unistr *dns_name;
504  unistr *site_name;
505  unistr *site_dn;
506  unistr *computer_dn;
507  unistr *server_dn;
508  unistr *ntds_dn;
509  uint32 is_pdc;
510  uint32 is_enabled;
511  uint32 is_gc;
512  GUID site_guid;
513  GUID computer_guid;
514  GUID server_guid;
515  GUID ntds_guid;
516  } drsuapi_DsGetDCInfo2;
517 
518  typedef struct {
519  [range(0,10000)] uint32 count;
520  [size_is(count)] drsuapi_DsGetDCInfo2 *array[];
521  } drsuapi_DsGetDCInfoCtr2;
522 
523  typedef struct {
524  uint32 unknown1;
525  uint32 unknown2;
526  uint32 unknown3;
527  uint32 unknown4;
528  uint32 unknown5;
529  uint32 unknown6;
530  unistr *server_nt4_account;
531  } drsuapi_DsGetDCInfo01;
532 
533  typedef struct {
534  [range(0,10000)] uint32 count;
535  [size_is(count)] drsuapi_DsGetDCInfo01 *array[];
536  } drsuapi_DsGetDCInfoCtr01;
537 
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;
543 
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;
549 
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
555  );
556 
557  /*****************/
558  /* Function 0x11 */
559  WERROR drsuapi_DsAddEntry();
560 
561  /*****************/
562  /* Function 0x12 */
563  WERROR DRSUAPI_EXECUTE_KCC();
564 
565  /*****************/
566  /* Function 0x13 */
567  typedef [v1_enum] enum {
568  DRSUAPI_DS_REPLICA_GET_INFO = 1,
569  DRSUAPI_DS_REPLICA_GET_INFO2 = 2
570  } drsuapi_DsReplicaGetInfoLevel;
571 
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;
589 
590  typedef struct {
591  drsuapi_DsReplicaInfoType info_type;
592  unistr *object_dn;
593  GUID guid1;
594  } drsuapi_DsReplicaGetInfoRequest1;
595 
596  typedef struct {
597  drsuapi_DsReplicaInfoType info_type;
598  unistr *object_dn;
599  GUID guid1;
600  uint32 unknown1;
601  unistr *string1;
602  unistr *string2;
603  uint32 unknown2;
604  } drsuapi_DsReplicaGetInfoRequest2;
605 
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;
610 
611  typedef struct {
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;
617  uint32 reserved;
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;
623  hyper highest_usn;
624  NTTIME last_success;
625  NTTIME last_attempt;
626  WERROR result_last_attempt;
627  uint32 consecutive_sync_failures;
628  } drsuapi_DsReplicaNeighbour;
629 
630  typedef struct {
631  uint32 count;
632  uint32 reserved;
633  [size_is(count)] drsuapi_DsReplicaNeighbour array[];
634  } drsuapi_DsReplicaNeighbourCtr;
635 
636  typedef struct {
637  uint32 count;
638  uint32 reserved;
639  [size_is(count)] drsuapi_DsReplicaCoursor array[];
640  } drsuapi_DsReplicaCoursorCtr;
641 
642  typedef struct {
643  unistr *attribute_name;
644  uint32 version;
645  NTTIME originating_last_changed;
646  GUID originating_dsa_invocation_id;
647  hyper originating_usn;
648  hyper local_usn;
649  } drsuapi_DsReplicaObjMetaData;
650 
651  typedef struct {
652  uint32 count;
653  uint32 reserved;
654  [size_is(count)] drsuapi_DsReplicaObjMetaData array[];
655  } drsuapi_DsReplicaObjMetaDataCtr;
656 
657  typedef struct {
658  unistr *dsa_obj_dn;
659  GUID dsa_obj_guid;
660  NTTIME first_failure;
661  uint32 num_failures;
662  WERROR last_result;
663  } drsuapi_DsReplicaKccDsaFailure;
664 
665  typedef struct {
666  uint32 count;
667  uint32 reserved;
668  [size_is(count)] drsuapi_DsReplicaKccDsaFailure array[];
669  } drsuapi_DsReplicaKccDsaFailuresCtr;
670 
671  typedef enum {
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;
678 
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;
687 
688  typedef struct {
689  NTTIME operation_start;
690  uint32 serial_num; /* unique till reboot */
691  uint32 priority;
692  drsuapi_DsReplicaOpType operation_type;
693  [switch_is(operation_type)] drsuapi_DsRplicaOpOptions options;
694  unistr *nc_dn;
695  unistr *remote_dsa_obj_dn;
696  unistr *remote_dsa_address;
697  GUID nc_obj_guid;
698  GUID remote_dsa_obj_guid;
699  } drsuapi_DsReplicaOp;
700 
701  typedef struct {
702  NTTIME time;
703  uint32 count;
704  [size_is(count)] drsuapi_DsReplicaOp array[];
705  } drsuapi_DsReplicaOpCtr;
706 
707  typedef struct {
708  unistr *attribute_name;
709  unistr *object_dn;
710  uint32 value_length;
711  [size_is(value_length)] uint8 *value[];
712  NTTIME deleted;
713  NTTIME created;
714  uint32 version;
715  NTTIME originating_last_changed;
716  GUID originating_dsa_invocation_id;
717  hyper originating_usn;
718  hyper local_usn;
719  } drsuapi_DsReplicaAttrValMetaData;
720 
721  typedef struct {
722  uint32 count;
723  int32 enumeration_context;
724  [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[];
725  } drsuapi_DsReplicaAttrValMetaDataCtr;
726 
727  typedef struct {
728  GUID source_dsa_invocation_id;
729  hyper highest_usn;
730  NTTIME last_sync_success;
731  } drsuapi_DsReplicaCoursor2;
732 
733  typedef struct {
734  uint32 count;
735  int32 enumeration_context;
736  [size_is(count)] drsuapi_DsReplicaCoursor2 array[];
737  } drsuapi_DsReplicaCoursor2Ctr;
738 
739  typedef struct {
740  GUID source_dsa_invocation_id;
741  hyper highest_usn;
742  NTTIME last_sync_success;
743  unistr *source_dsa_obj_dn;
744  } drsuapi_DsReplicaCoursor3;
745 
746  typedef struct {
747  uint32 count;
748  int32 enumeration_context;
749  [size_is(count)] drsuapi_DsReplicaCoursor3 array[];
750  } drsuapi_DsReplicaCoursor3Ctr;
751 
752  typedef struct {
753  unistr *attribute_name;
754  uint32 version;
755  NTTIME originating_last_changed;
756  GUID originating_dsa_invocation_id;
757  hyper originating_usn;
758  hyper local_usn;
759  unistr *originating_dsa_obj_dn;
760  } drsuapi_DsReplicaObjMetaData2;
761 
762  typedef struct {
763  uint32 count;
764  int32 enumeration_context;
765  [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[];
766  } drsuapi_DsReplicaObjMetaData2Ctr;
767 
768  typedef struct {
769  unistr *attribute_name;
770  unistr *object_dn;
771  uint32 value_length;
772  [size_is(value_length)] uint8 *value[];
773  NTTIME deleted;
774  NTTIME created;
775  uint32 version;
776  NTTIME originating_last_changed;
777  GUID originating_dsa_invocation_id;
778  hyper originating_usn;
779  hyper local_usn;
780  unistr *originating_dsa_obj_dn;
781  } drsuapi_DsReplicaAttrValMetaData2;
782 
783  typedef struct {
784  uint32 count;
785  int32 enumeration_context;
786  [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[];
787  } drsuapi_DsReplicaAttrValMetaData2Ctr;
788 
789  typedef struct {
790  hyper u1; /* session number? */
791  uint32 u2;
792  uint32 u3;
793  GUID bind_guid;
794  NTTIME_1sec bind_time;
795  uint32 u4; /* flags? */
796  uint32 u5;
797  } drsuapi_DsReplicaConnection04;
798 
799  typedef struct {
800  [range(0,10000)] uint32 count;
801  uint32 reserved;
802  [size_is(count)] drsuapi_DsReplicaConnection04 array[];
803  } drsuapi_DsReplicaConnection04Ctr;
804 
805  typedef struct {
806  unistr *str1;
807  uint32 u1;
808  uint32 u2;
809  uint32 u3;
810  uint32 u4;
811  uint32 u5;
812  hyper u6;
813  uint32 u7;
814  } drsuapi_DsReplica06;
815 
816  typedef struct {
817  [range(0,256)] uint32 count;
818  uint32 reserved;
819  [size_is(count)] drsuapi_DsReplica06 array[];
820  } drsuapi_DsReplica06Ctr;
821 
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;
839 
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
846  );
847 
848  /*****************/
849  /* Function 0x14 */
850  WERROR DRSUAPI_ADD_SID_HISTORY();
851 
852  /*****************/
853  /* Function 0x15 */
854  WERROR DRSUAPI_GET_MEMBERSHIPS2();
855 
856  /*****************/
857  /* Function 0x16 */
858  WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS();
859 
860  /*****************/
861  /* Function 0x17 */
862  WERROR DRSUAPI_GET_OBJECT_EXISTENCE();
863 
864  /*****************/
865  /* Function 0x18 */
866  WERROR DRSUAPI_QUERY_SITES_BY_COST();
867 }
Definition: file-pcapng.c:177
Definition: conversation.c:27