[IDL]
[reactos.git] / reactos / sdk / include / reactos / idl / netlogon.idl
1 /*
2 * Netlogon Service interface definition
3 */
4
5 #include <ms-dtyp.idl>
6
7 cpp_quote("#if 0")
8 typedef ULONG NTSTATUS;
9 cpp_quote("#endif")
10
11 cpp_quote("#ifndef _NTSECAPI_H")
12 typedef struct _STRING
13 {
14 USHORT Length;
15 USHORT MaximumLength;
16 [size_is(MaximumLength), length_is(Length)] CHAR *Buffer;
17 } STRING, *PSTRING;
18 cpp_quote("#endif")
19
20 typedef struct _OLD_LARGE_INTEGER
21 {
22 ULONG LowPart;
23 LONG HighPart;
24 } OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER;
25
26 typedef struct _CYPHER_BLOCK
27 {
28 CHAR data[8];
29 } CYPHER_BLOCK, *PCYPHER_BLOCK;
30
31 typedef struct _NT_OWF_PASSWORD
32 {
33 CYPHER_BLOCK data[2];
34 } NT_OWF_PASSWORD, *PNT_OWF_PASSWORD, ENCRYPTED_NT_OWF_PASSWORD, *PENCRYPTED_NT_OWF_PASSWORD;
35
36 typedef struct _LM_OWF_PASSWORD
37 {
38 CYPHER_BLOCK data[2];
39 } LM_OWF_PASSWORD, *PLM_OWF_PASSWORD, ENCRYPTED_LM_OWF_PASSWORD, *PENCRYPTED_LM_OWF_PASSWORD;
40
41 typedef [handle] wchar_t *LOGONSRV_HANDLE;
42
43 typedef struct _NLPR_SID_INFORMATION
44 {
45 PRPC_SID SidPointer;
46 } NLPR_SID_INFORMATION, *PNLPR_SID_INFORMATION;
47
48 typedef struct _NLPR_SID_ARRAY
49 {
50 ULONG Count;
51 [size_is(Count)] PNLPR_SID_INFORMATION Sids;
52 } NLPR_SID_ARRAY, *PNLPR_SID_ARRAY;
53
54 typedef struct _NLPR_CR_CIPHER_VALUE
55 {
56 ULONG Length;
57 ULONG MaximumLength;
58 [size_is(MaximumLength), length_is(Length)] UCHAR *Buffer;
59 } NLPR_CR_CIPHER_VALUE, *PNLPR_CR_CIPHER_VALUE;
60
61 typedef struct _NLPR_LOGON_HOURS
62 {
63 USHORT UnitsPerWeek;
64 [size_is(1260), length_is((UnitsPerWeek + 7) / 8)] UCHAR *LogonHours;
65 } NLPR_LOGON_HOURS, *PNLPR_LOGON_HOURS;
66
67 typedef struct _NLPR_USER_PRIVATE_INFO
68 {
69 UCHAR SensitiveData;
70 ULONG DataLength;
71 [size_is(DataLength)] UCHAR *Data;
72 } NLPR_USER_PRIVATE_INFO, *PNLPR_USER_PRIVATE_INFO;
73
74 typedef struct _NLPR_MODIFIED_COUNT
75 {
76 OLD_LARGE_INTEGER ModifiedCount;
77 } NLPR_MODIFIED_COUNT, *PNLPR_MODIFIED_COUNT;
78
79 typedef struct _NLPR_QUOTA_LIMITS
80 {
81 ULONG PagedPoolLimit;
82 ULONG NonPagedPoolLimit;
83 ULONG MinimumWorkingSetSize;
84 ULONG MaximumWorkingSetSize;
85 ULONG PagefileLimit;
86 OLD_LARGE_INTEGER Reserved;
87 } NLPR_QUOTA_LIMITS, *PNLPR_QUOTA_LIMITS;
88
89 typedef struct _NETLOGON_DELTA_USER
90 {
91 RPC_UNICODE_STRING UserName;
92 RPC_UNICODE_STRING FullName;
93 ULONG UserId;
94 ULONG PrimaryGroupId;
95 RPC_UNICODE_STRING HomeDirectory;
96 RPC_UNICODE_STRING HomeDirectoryDrive;
97 RPC_UNICODE_STRING ScriptPath;
98 RPC_UNICODE_STRING AdminComment;
99 RPC_UNICODE_STRING WorkStations;
100 OLD_LARGE_INTEGER LastLogon;
101 OLD_LARGE_INTEGER LastLogoff;
102 NLPR_LOGON_HOURS LogonHours;
103 USHORT BadPasswordCount;
104 USHORT LogonCount;
105 OLD_LARGE_INTEGER PasswordLastSet;
106 OLD_LARGE_INTEGER AccountExpires;
107 ULONG UserAccountControl;
108 ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword;
109 ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword;
110 UCHAR NtPasswordPresent;
111 UCHAR LmPasswordPresent;
112 UCHAR PasswordExpired;
113 RPC_UNICODE_STRING UserComment;
114 RPC_UNICODE_STRING Parameters;
115 USHORT CountryCode;
116 USHORT CodePage;
117 NLPR_USER_PRIVATE_INFO PrivateData;
118 SECURITY_INFORMATION SecurityInformation;
119 ULONG SecuritySize;
120 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
121 RPC_UNICODE_STRING ProfilePath;
122 RPC_UNICODE_STRING DummyString2;
123 RPC_UNICODE_STRING DummyString3;
124 RPC_UNICODE_STRING DummyString4;
125 ULONG DummyLong1;
126 ULONG DummyLong2;
127 ULONG DummyLong3;
128 ULONG DummyLong4;
129 } NETLOGON_DELTA_USER, *PNETLOGON_DELTA_USER;
130
131 typedef struct _NETLOGON_DELTA_GROUP
132 {
133 RPC_UNICODE_STRING Name;
134 ULONG RelativeId;
135 ULONG Attributes;
136 RPC_UNICODE_STRING AdminComment;
137 SECURITY_INFORMATION SecurityInformation;
138 ULONG SecuritySize;
139 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
140 RPC_UNICODE_STRING DummyString1;
141 RPC_UNICODE_STRING DummyString2;
142 RPC_UNICODE_STRING DummyString3;
143 RPC_UNICODE_STRING DummyString4;
144 ULONG DummyLong1;
145 ULONG DummyLong2;
146 ULONG DummyLong3;
147 ULONG DummyLong4;
148 } NETLOGON_DELTA_GROUP, *PNETLOGON_DELTA_GROUP;
149
150 typedef struct _NETLOGON_DELTA_GROUP_MEMBER
151 {
152 [size_is(MemberCount)] ULONG *Members;
153 [size_is(MemberCount)] ULONG *Attributes;
154 ULONG MemberCount;
155 ULONG DummyLong1;
156 ULONG DummyLong2;
157 ULONG DummyLong3;
158 ULONG DummyLong4;
159 } NETLOGON_DELTA_GROUP_MEMBER, *PNETLOGON_DELTA_GROUP_MEMBER;
160
161 typedef struct _NETLOGON_DELTA_ALIAS
162 {
163 RPC_UNICODE_STRING Name;
164 ULONG RelativeId;
165 SECURITY_INFORMATION SecurityInformation;
166 ULONG SecuritySize;
167 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
168 RPC_UNICODE_STRING Comment;
169 RPC_UNICODE_STRING DummyString2;
170 RPC_UNICODE_STRING DummyString3;
171 RPC_UNICODE_STRING DummyString4;
172 ULONG DummyLong1;
173 ULONG DummyLong2;
174 ULONG DummyLong3;
175 ULONG DummyLong4;
176 } NETLOGON_DELTA_ALIAS, *PNETLOGON_DELTA_ALIAS;
177
178 typedef struct _NETLOGON_DELTA_ALIAS_MEMBER
179 {
180 NLPR_SID_ARRAY Members;
181 ULONG DummyLong1;
182 ULONG DummyLong2;
183 ULONG DummyLong3;
184 ULONG DummyLong4;
185 } NETLOGON_DELTA_ALIAS_MEMBER, *PNETLOGON_DELTA_ALIAS_MEMBER;
186
187 typedef struct _NETLOGON_DELTA_DOMAIN
188 {
189 RPC_UNICODE_STRING DomainName;
190 RPC_UNICODE_STRING OemInformation;
191 OLD_LARGE_INTEGER ForceLogoff;
192 USHORT MinPasswordLength;
193 USHORT PasswordHistoryLength;
194 OLD_LARGE_INTEGER MaxPasswordAge;
195 OLD_LARGE_INTEGER MinPasswordAge;
196 OLD_LARGE_INTEGER DomainModifiedCount;
197 OLD_LARGE_INTEGER DomainCreationTime;
198 SECURITY_INFORMATION SecurityInformation;
199 ULONG SecuritySize;
200 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
201 RPC_UNICODE_STRING DomainLockoutInformation;
202 RPC_UNICODE_STRING DummyString2;
203 RPC_UNICODE_STRING DummyString3;
204 RPC_UNICODE_STRING DummyString4;
205 ULONG PasswordProperties;
206 ULONG DummyLong2;
207 ULONG DummyLong3;
208 ULONG DummyLong4;
209 } NETLOGON_DELTA_DOMAIN, *PNETLOGON_DELTA_DOMAIN;
210
211 typedef struct _NETLOGON_DELTA_RENAME_GROUP
212 {
213 RPC_UNICODE_STRING OldName;
214 RPC_UNICODE_STRING NewName;
215 RPC_UNICODE_STRING DummyString1;
216 RPC_UNICODE_STRING DummyString2;
217 RPC_UNICODE_STRING DummyString3;
218 RPC_UNICODE_STRING DummyString4;
219 ULONG DummyLong1;
220 ULONG DummyLong2;
221 ULONG DummyLong3;
222 ULONG DummyLong4;
223 } NETLOGON_RENAME_GROUP, *PNETLOGON_DELTA_RENAME_GROUP;
224
225 typedef struct _NETLOGON_DELTA_RENAME_USER
226 {
227 RPC_UNICODE_STRING OldName;
228 RPC_UNICODE_STRING NewName;
229 RPC_UNICODE_STRING DummyString1;
230 RPC_UNICODE_STRING DummyString2;
231 RPC_UNICODE_STRING DummyString3;
232 RPC_UNICODE_STRING DummyString4;
233 ULONG DummyLong1;
234 ULONG DummyLong2;
235 ULONG DummyLong3;
236 ULONG DummyLong4;
237 } NETLOGON_RENAME_USER, *PNETLOGON_DELTA_RENAME_USER;
238
239 typedef struct _NETLOGON_DELTA_RENAME_ALIAS
240 {
241 RPC_UNICODE_STRING OldName;
242 RPC_UNICODE_STRING NewName;
243 RPC_UNICODE_STRING DummyString1;
244 RPC_UNICODE_STRING DummyString2;
245 RPC_UNICODE_STRING DummyString3;
246 RPC_UNICODE_STRING DummyString4;
247 ULONG DummyLong1;
248 ULONG DummyLong2;
249 ULONG DummyLong3;
250 ULONG DummyLong4;
251 } NETLOGON_RENAME_ALIAS, *PNETLOGON_DELTA_RENAME_ALIAS;
252
253 typedef struct _NETLOGON_DELTA_POLICY
254 {
255 ULONG MaximumLogSize;
256 OLD_LARGE_INTEGER AuditRetentionPeriod;
257 UCHAR AuditingMode;
258 ULONG MaximumAuditEventCount;
259 [size_is(MaximumAuditEventCount + 1)] ULONG *EventAuditingOptions;
260 RPC_UNICODE_STRING PrimaryDomainName;
261 PRPC_SID PrimaryDomainSid;
262 NLPR_QUOTA_LIMITS QuotaLimits;
263 OLD_LARGE_INTEGER ModifiedId;
264 OLD_LARGE_INTEGER DatabaseCreationTime;
265 SECURITY_INFORMATION SecurityInformation;
266 ULONG SecuritySize;
267 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
268 RPC_UNICODE_STRING DummyString1;
269 RPC_UNICODE_STRING DummyString2;
270 RPC_UNICODE_STRING DummyString3;
271 RPC_UNICODE_STRING DummyString4;
272 ULONG DummyLong1;
273 ULONG DummyLong2;
274 ULONG DummyLong3;
275 ULONG DummyLong4;
276 } NETLOGON_DELTA_POLICY, *PNETLOGON_DELTA_POLICY;
277
278 typedef struct _NETLOGON_DELTA_TRUSTED_DOMAINS
279 {
280 RPC_UNICODE_STRING DomainName;
281 ULONG NumControllerEntries;
282 [size_is(NumControllerEntries)] PRPC_UNICODE_STRING ControllerNames;
283 SECURITY_INFORMATION SecurityInformation;
284 ULONG SecuritySize;
285 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
286 RPC_UNICODE_STRING DummyString1;
287 RPC_UNICODE_STRING DummyString2;
288 RPC_UNICODE_STRING DummyString3;
289 RPC_UNICODE_STRING DummyString4;
290 ULONG TrustedPosixOffset;
291 ULONG DummyLong2;
292 ULONG DummyLong3;
293 ULONG DummyLong4;
294 } NETLOGON_DELTA_TRUSTED_DOMAINS, *PNETLOGON_DELTA_TRUSTED_DOMAINS;
295
296 typedef struct _NETLOGON_DELTA_ACCOUNTS
297 {
298 ULONG PrivilegeEntries;
299 ULONG PrivilegeControl;
300 [size_is(PrivilegeEntries)] ULONG *PrivilegeAttributes;
301 [size_is(PrivilegeEntries)] PRPC_UNICODE_STRING PrivilegeNames;
302 NLPR_QUOTA_LIMITS QuotaLimits;
303 ULONG SystemAccessFlags;
304 SECURITY_INFORMATION SecurityInformation;
305 ULONG SecuritySize;
306 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
307 RPC_UNICODE_STRING DummyString1;
308 RPC_UNICODE_STRING DummyString2;
309 RPC_UNICODE_STRING DummyString3;
310 RPC_UNICODE_STRING DummyString4;
311 ULONG DummyLong1;
312 ULONG DummyLong2;
313 ULONG DummyLong3;
314 ULONG DummyLong4;
315 } NETLOGON_DELTA_ACCOUNTS, *PNETLOGON_DELTA_ACCOUNTS;
316
317 typedef struct _NETLOGON_DELTA_SECRET
318 {
319 NLPR_CR_CIPHER_VALUE CurrentValue;
320 OLD_LARGE_INTEGER CurrentValueSetTime;
321 NLPR_CR_CIPHER_VALUE OldValue;
322 OLD_LARGE_INTEGER OldValueSetTime;
323 SECURITY_INFORMATION SecurityInformation;
324 ULONG SecuritySize;
325 [size_is(SecuritySize)] UCHAR *SecurityDescriptor;
326 RPC_UNICODE_STRING DummyString1;
327 RPC_UNICODE_STRING DummyString2;
328 RPC_UNICODE_STRING DummyString3;
329 RPC_UNICODE_STRING DummyString4;
330 ULONG DummyLong1;
331 ULONG DummyLong2;
332 ULONG DummyLong3;
333 ULONG DummyLong4;
334 } NETLOGON_DELTA_SECRET, *PNETLOGON_DELTA_SECRET;
335
336 typedef struct _NETLOGON_DELTA_DELETE_GROUP
337 {
338 [string] wchar_t *AccountName;
339 RPC_UNICODE_STRING DummyString1;
340 RPC_UNICODE_STRING DummyString2;
341 RPC_UNICODE_STRING DummyString3;
342 RPC_UNICODE_STRING DummyString4;
343 ULONG DummyLong1;
344 ULONG DummyLong2;
345 ULONG DummyLong3;
346 ULONG DummyLong4;
347 } NETLOGON_DELTA_DELETE_GROUP, *PNETLOGON_DELTA_DELETE_GROUP;
348
349 typedef struct _NETLOGON_DELTA_DELETE_USER
350 {
351 [string] wchar_t *AccountName;
352 RPC_UNICODE_STRING DummyString1;
353 RPC_UNICODE_STRING DummyString2;
354 RPC_UNICODE_STRING DummyString3;
355 RPC_UNICODE_STRING DummyString4;
356 ULONG DummyLong1;
357 ULONG DummyLong2;
358 ULONG DummyLong3;
359 ULONG DummyLong4;
360 } NETLOGON_DELTA_DELETE_USER, *PNETLOGON_DELTA_DELETE_USER;
361
362 typedef enum _NETLOGON_DELTA_TYPE
363 {
364 AddOrChangeDomain = 1,
365 AddOrChangeGroup = 2,
366 DeleteGroup = 3,
367 RenameGroup = 4,
368 AddOrChangeUser = 5,
369 DeleteUser = 6,
370 RenameUser = 7,
371 ChangeGroupMembership = 8,
372 AddOrChangeAlias = 9,
373 DeleteAlias = 10,
374 RenameAlias = 11,
375 ChangeAliasMembership = 12,
376 AddOrChangeLsaPolicy = 13,
377 AddOrChangeLsaTDomain = 14,
378 DeleteLsaTDomain = 15,
379 AddOrChangeLsaAccount = 16,
380 DeleteLsaAccount = 17,
381 AddOrChangeLsaSecret = 18,
382 DeleteLsaSecret = 19,
383 DeleteGroupByName = 20,
384 DeleteUserByName = 21,
385 SerialNumberSkip = 22
386 } NETLOGON_DELTA_TYPE;
387
388 typedef [switch_type(NETLOGON_DELTA_TYPE)] union _NETLOGON_DELTA_UNION
389 {
390 [case(AddOrChangeDomain)] PNETLOGON_DELTA_DOMAIN DeltaDomain;
391 [case(AddOrChangeGroup)] PNETLOGON_DELTA_GROUP DeltaGroup;
392 [case(RenameGroup)] PNETLOGON_DELTA_RENAME_GROUP DeltaRenameGroup;
393 [case(AddOrChangeUser)] PNETLOGON_DELTA_USER DeltaUser;
394 [case(RenameUser)] PNETLOGON_DELTA_RENAME_USER DeltaRenameUser;
395 [case(ChangeGroupMembership)] PNETLOGON_DELTA_GROUP_MEMBER DeltaGroupMember;
396 [case(AddOrChangeAlias)] PNETLOGON_DELTA_ALIAS DeltaAlias;
397 [case(RenameAlias)] PNETLOGON_DELTA_RENAME_ALIAS DeltaRenameAlias;
398 [case(ChangeAliasMembership)] PNETLOGON_DELTA_ALIAS_MEMBER DeltaAliasMember;
399 [case(AddOrChangeLsaPolicy)] PNETLOGON_DELTA_POLICY DeltaPolicy;
400 [case(AddOrChangeLsaTDomain)] PNETLOGON_DELTA_TRUSTED_DOMAINS DeltaTDomains;
401 [case(AddOrChangeLsaAccount)] PNETLOGON_DELTA_ACCOUNTS DeltaAccounts;
402 [case(AddOrChangeLsaSecret)] PNETLOGON_DELTA_SECRET DeltaSecret;
403 [case(DeleteGroupByName)] PNETLOGON_DELTA_DELETE_GROUP DeltaDeleteGroup;
404 [case(DeleteUserByName)] PNETLOGON_DELTA_DELETE_USER DeltaDeleteUser;
405 [case(SerialNumberSkip)] PNLPR_MODIFIED_COUNT DeltaSerialNumberSkip;
406 [default] ;
407 } NETLOGON_DELTA_UNION, *PNETLOGON_DELTA_UNION;
408
409 typedef [switch_type(NETLOGON_DELTA_TYPE)] union _NETLOGON_DELTA_ID_UNION
410 {
411 [case(AddOrChangeDomain,
412 AddOrChangeGroup,
413 DeleteGroup,
414 RenameGroup,
415 AddOrChangeUser,
416 DeleteUser,
417 RenameUser,
418 ChangeGroupMembership,
419 AddOrChangeAlias,
420 DeleteAlias,
421 RenameAlias,
422 ChangeAliasMembership,
423 DeleteGroupByName,
424 DeleteUserByName)] ULONG Rid;
425 [case(AddOrChangeLsaPolicy,
426 AddOrChangeLsaTDomain,
427 DeleteLsaTDomain,
428 AddOrChangeLsaAccount,
429 DeleteLsaAccount)] PRPC_SID Sid;
430 [case(AddOrChangeLsaSecret,
431 DeleteLsaSecret)] [string] wchar_t *Name;
432 [default] ;
433 } NETLOGON_DELTA_ID_UNION, *PNETLOGON_DELTA_ID_UNION;
434
435 typedef struct _NETLOGON_DELTA_ENUM
436 {
437 NETLOGON_DELTA_TYPE DeltaType;
438 [switch_is(DeltaType)] NETLOGON_DELTA_ID_UNION DeltaID;
439 [switch_is(DeltaType)] NETLOGON_DELTA_UNION DeltaUnion;
440 } NETLOGON_DELTA_ENUM, *PNETLOGON_DELTA_ENUM;
441
442 typedef struct _NETLOGON_DELTA_ENUM_ARRAY
443 {
444 DWORD CountReturned;
445 [size_is(CountReturned)] PNETLOGON_DELTA_ENUM Deltas;
446 } NETLOGON_DELTA_ENUM_ARRAY, *PNETLOGON_DELTA_ENUM_ARRAY;
447
448 typedef struct _NETLOGON_LOGON_IDENTITY_INFO
449 {
450 RPC_UNICODE_STRING LogonDomainName;
451 ULONG ParameterControl;
452 OLD_LARGE_INTEGER Reserved;
453 RPC_UNICODE_STRING UserName;
454 RPC_UNICODE_STRING Workstation;
455 } NETLOGON_LOGON_IDENTITY_INFO, *PNETLOGON_LOGON_IDENTITY_INFO;
456
457 typedef struct _NETLOGON_INTERACTIVE_INFO
458 {
459 NETLOGON_LOGON_IDENTITY_INFO Identity;
460 LM_OWF_PASSWORD LmOwfPassword;
461 NT_OWF_PASSWORD NtOwfPassword;
462 } NETLOGON_INTERACTIVE_INFO, *PNETLOGON_INTERACTIVE_INFO;
463
464 typedef enum _NETLOGON_LOGON_INFO_CLASS
465 {
466 NetlogonInteractiveInformation = 1,
467 NetlogonNetworkInformation = 2,
468 NetlogonServiceInformation = 3,
469 NetlogonGenericInformation = 4,
470 NetlogonInteractiveTransitiveInformation = 5,
471 NetlogonNetworkTransitiveInformation = 6,
472 NetlogonServiceTransitiveInformation = 7
473 } NETLOGON_LOGON_INFO_CLASS;
474
475 typedef struct _NETLOGON_SERVICE_INFO
476 {
477 NETLOGON_LOGON_IDENTITY_INFO Identity;
478 LM_OWF_PASSWORD LmOwfPassword;
479 NT_OWF_PASSWORD NtOwfPassword;
480 } NETLOGON_SERVICE_INFO, *PNETLOGON_SERVICE_INFO;
481
482 typedef struct
483 {
484 CHAR data[8];
485 } LM_CHALLENGE;
486
487 typedef struct _NETLOGON_NETWORK_INFO
488 {
489 NETLOGON_LOGON_IDENTITY_INFO Identity;
490 LM_CHALLENGE LmChallenge;
491 STRING NtChallengeResponse;
492 STRING LmChallengeResponse;
493 } NETLOGON_NETWORK_INFO, *PNETLOGON_NETWORK_INFO;
494
495 typedef struct _NETLOGON_GENERIC_INFO
496 {
497 NETLOGON_LOGON_IDENTITY_INFO Identity;
498 RPC_UNICODE_STRING PackageName;
499 ULONG DataLength;
500 [size_is(DataLength)] UCHAR *LogonData;
501 } NETLOGON_GENERIC_INFO, *PNETLOGON_GENERIC_INFO;
502
503 typedef [switch_type(NETLOGON_LOGON_INFO_CLASS)] union _NETLOGON_LEVEL
504 {
505 [case(NetlogonInteractiveInformation)] PNETLOGON_INTERACTIVE_INFO LogonInteractive;
506 [case(NetlogonInteractiveTransitiveInformation)] PNETLOGON_INTERACTIVE_INFO LogonInteractiveTransitive;
507 [case(NetlogonServiceInformation)] PNETLOGON_SERVICE_INFO LogonService;
508 [case(NetlogonServiceTransitiveInformation)] PNETLOGON_SERVICE_INFO LogonServiceTransitive;
509 [case(NetlogonNetworkInformation)] PNETLOGON_NETWORK_INFO LogonNetwork;
510 [case(NetlogonNetworkTransitiveInformation)] PNETLOGON_NETWORK_INFO LogonNetworkTransitive;
511 [case(NetlogonGenericInformation)] PNETLOGON_GENERIC_INFO LogonGeneric;
512 [default] ;
513 } NETLOGON_LEVEL, *PNETLOGON_LEVEL;
514
515 typedef enum _NETLOGON_VALIDATION_INFO_CLASS
516 {
517 NetlogonValidationUasInfo = 1,
518 NetlogonValidationSamInfo = 2,
519 NetlogonValidationSamInfo2 = 3,
520 NetlogonValidationGenericInfo = 4,
521 NetlogonValidationGenericInfo2 = 5,
522 NetlogonValidationSamInfo4 = 6
523 } NETLOGON_VALIDATION_INFO_CLASS;
524
525 cpp_quote("#ifndef _NTSAM_")
526 typedef struct _GROUP_MEMBERSHIP
527 {
528 ULONG RelativeId;
529 ULONG Attributes;
530 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
531 cpp_quote("#endif")
532
533 typedef struct _USER_SESSION_KEY
534 {
535 CYPHER_BLOCK data[2];
536 } USER_SESSION_KEY, *PUSER_SESSION_KEY;
537
538 typedef struct _NETLOGON_SID_AND_ATTRIBUTES
539 {
540 PRPC_SID Sid;
541 ULONG Attributes;
542 } NETLOGON_SID_AND_ATTRIBUTES, *PNETLOGON_SID_AND_ATTRIBUTES;
543
544 typedef struct _NETLOGON_VALIDATION_SAM_INFO
545 {
546 OLD_LARGE_INTEGER LogonTime;
547 OLD_LARGE_INTEGER LogoffTime;
548 OLD_LARGE_INTEGER KickOffTime;
549 OLD_LARGE_INTEGER PasswordLastSet;
550 OLD_LARGE_INTEGER PasswordCanChange;
551 OLD_LARGE_INTEGER PasswordMustChange;
552 RPC_UNICODE_STRING EffectiveName;
553 RPC_UNICODE_STRING FullName;
554 RPC_UNICODE_STRING LogonScript;
555 RPC_UNICODE_STRING ProfilePath;
556 RPC_UNICODE_STRING HomeDirectory;
557 RPC_UNICODE_STRING HomeDirectoryDrive;
558 USHORT LogonCount;
559 USHORT BadPasswordCount;
560 ULONG UserId;
561 ULONG PrimaryGroupId;
562 ULONG GroupCount;
563 [size_is(GroupCount)] PGROUP_MEMBERSHIP GroupIds;
564 ULONG UserFlags;
565 USER_SESSION_KEY UserSessionKey;
566 RPC_UNICODE_STRING LogonServer;
567 RPC_UNICODE_STRING LogonDomainName;
568 PRPC_SID LogonDomainId;
569 ULONG ExpansionRoom[10];
570 } NETLOGON_VALIDATION_SAM_INFO, *PNETLOGON_VALIDATION_SAM_INFO;
571
572 typedef struct _NETLOGON_VALIDATION_SAM_INFO2
573 {
574 OLD_LARGE_INTEGER LogonTime;
575 OLD_LARGE_INTEGER LogoffTime;
576 OLD_LARGE_INTEGER KickOffTime;
577 OLD_LARGE_INTEGER PasswordLastSet;
578 OLD_LARGE_INTEGER PasswordCanChange;
579 OLD_LARGE_INTEGER PasswordMustChange;
580 RPC_UNICODE_STRING EffectiveName;
581 RPC_UNICODE_STRING FullName;
582 RPC_UNICODE_STRING LogonScript;
583 RPC_UNICODE_STRING ProfilePath;
584 RPC_UNICODE_STRING HomeDirectory;
585 RPC_UNICODE_STRING HomeDirectoryDrive;
586 USHORT LogonCount;
587 USHORT BadPasswordCount;
588 ULONG UserId;
589 ULONG PrimaryGroupId;
590 ULONG GroupCount;
591 [size_is(GroupCount)] PGROUP_MEMBERSHIP GroupIds;
592 ULONG UserFlags;
593 USER_SESSION_KEY UserSessionKey;
594 RPC_UNICODE_STRING LogonServer;
595 RPC_UNICODE_STRING LogonDomainName;
596 PRPC_SID LogonDomainId;
597 ULONG ExpansionRoom[10];
598 ULONG SidCount;
599 [size_is(SidCount)] PNETLOGON_SID_AND_ATTRIBUTES ExtraSids;
600 } NETLOGON_VALIDATION_SAM_INFO2, *PNETLOGON_VALIDATION_SAM_INFO2 ;
601
602 typedef struct _NETLOGON_VALIDATION_GENERIC_INFO2
603 {
604 ULONG DataLength;
605 [size_is(DataLength)] UCHAR *ValidationData;
606 } NETLOGON_VALIDATION_GENERIC_INFO2, *PNETLOGON_VALIDATION_GENERIC_INFO2;
607
608 typedef struct _NETLOGON_VALIDATION_SAM_INFO4
609 {
610 OLD_LARGE_INTEGER LogonTime;
611 OLD_LARGE_INTEGER LogoffTime;
612 OLD_LARGE_INTEGER KickOffTime;
613 OLD_LARGE_INTEGER PasswordLastSet;
614 OLD_LARGE_INTEGER PasswordCanChange;
615 OLD_LARGE_INTEGER PasswordMustChange;
616 RPC_UNICODE_STRING EffectiveName;
617 RPC_UNICODE_STRING FullName;
618 RPC_UNICODE_STRING LogonScript;
619 RPC_UNICODE_STRING ProfilePath;
620 RPC_UNICODE_STRING HomeDirectory;
621 RPC_UNICODE_STRING HomeDirectoryDrive;
622 unsigned short LogonCount;
623 unsigned short BadPasswordCount;
624 unsigned long UserId;
625 unsigned long PrimaryGroupId;
626 unsigned long GroupCount;
627 [size_is(GroupCount)] PGROUP_MEMBERSHIP GroupIds;
628 unsigned long UserFlags;
629 USER_SESSION_KEY UserSessionKey;
630 RPC_UNICODE_STRING LogonServer;
631 RPC_UNICODE_STRING LogonDomainName;
632 PRPC_SID LogonDomainId;
633 unsigned char LMKey[8];
634 ULONG UserAccountControl;
635 ULONG SubAuthStatus;
636 OLD_LARGE_INTEGER LastSuccessfulILogon;
637 OLD_LARGE_INTEGER LastFailedILogon;
638 ULONG FailedILogonCount;
639 ULONG Reserved4[1];
640 unsigned long SidCount;
641 [size_is(SidCount)] PNETLOGON_SID_AND_ATTRIBUTES ExtraSids;
642 RPC_UNICODE_STRING DnsLogonDomainName;
643 RPC_UNICODE_STRING Upn;
644 RPC_UNICODE_STRING ExpansionString1;
645 RPC_UNICODE_STRING ExpansionString2;
646 RPC_UNICODE_STRING ExpansionString3;
647 RPC_UNICODE_STRING ExpansionString4;
648 RPC_UNICODE_STRING ExpansionString5;
649 RPC_UNICODE_STRING ExpansionString6;
650 RPC_UNICODE_STRING ExpansionString7;
651 RPC_UNICODE_STRING ExpansionString8;
652 RPC_UNICODE_STRING ExpansionString9;
653 RPC_UNICODE_STRING ExpansionString10;
654 } NETLOGON_VALIDATION_SAM_INFO4, *PNETLOGON_VALIDATION_SAM_INFO4;
655
656 typedef [switch_type(enum _NETLOGON_VALIDATION_INFO_CLASS)] union _NETLOGON_VALIDATION
657 {
658 [case(NetlogonValidationSamInfo)] PNETLOGON_VALIDATION_SAM_INFO ValidationSam;
659 [case(NetlogonValidationSamInfo2)] PNETLOGON_VALIDATION_SAM_INFO2 ValidationSam2;
660 [case(NetlogonValidationGenericInfo2)] PNETLOGON_VALIDATION_GENERIC_INFO2 ValidationGeneric2;
661 [case(NetlogonValidationSamInfo4)] PNETLOGON_VALIDATION_SAM_INFO4 ValidationSam4;
662 [default] ;
663 } NETLOGON_VALIDATION, *PNETLOGON_VALIDATION;
664
665 typedef [switch_type(DWORD)] union _NETLOGON_CONTROL_DATA_INFORMATION
666 {
667 [case(5, 6, 9, 10)] [string] wchar_t *TrustedDomainName;
668 [case(65534)] DWORD DebugFlag;
669 [case(8)] [string] wchar_t *UserName;
670 [default] ;
671 } NETLOGON_CONTROL_DATA_INFORMATION, *PNETLOGON_CONTROL_DATA_INFORMATION;
672
673 cpp_quote("#ifndef _LMACCESS_H")
674 typedef struct _NETLOGON_INFO_1
675 {
676 DWORD netlog1_flags;
677 NET_API_STATUS netlog1_pdc_connection_status;
678 } NETLOGON_INFO_1, *PNETLOGON_INFO_1;
679
680 typedef struct _NETLOGON_INFO_2
681 {
682 DWORD netlog2_flags;
683 NET_API_STATUS netlog2_pdc_connection_status;
684 [string] wchar_t *netlog2_trusted_dc_name;
685 NET_API_STATUS netlog2_tc_connection_status;
686 } NETLOGON_INFO_2, *PNETLOGON_INFO_2;
687
688 typedef struct _NETLOGON_INFO_3
689 {
690 DWORD netlog3_flags;
691 DWORD netlog3_logon_attempts;
692 DWORD netlog3_reserved1;
693 DWORD netlog3_reserved2;
694 DWORD netlog3_reserved3;
695 DWORD netlog3_reserved4;
696 DWORD netlog3_reserved5;
697 } NETLOGON_INFO_3, *PNETLOGON_INFO_3;
698 cpp_quote("#endif")
699
700 typedef struct _NETLOGON_INFO_4
701 {
702 [string] wchar_t *netlog4_trusted_dc_name;
703 [string] wchar_t *netlog4_trusted_domain_name;
704 } NETLOGON_INFO_4, *PNETLOGON_INFO_4;
705
706 typedef [switch_type(DWORD)] union _NETLOGON_CONTROL_QUERY_INFORMATION
707 {
708 [case(1)] PNETLOGON_INFO_1 NetlogonInfo1;
709 [case(2)] PNETLOGON_INFO_2 NetlogonInfo2;
710 [case(3)] PNETLOGON_INFO_3 NetlogonInfo3;
711 [case(4)] PNETLOGON_INFO_4 NetlogonInfo4;
712 [default] ;
713 } NETLOGON_CONTROL_QUERY_INFORMATION, *PNETLOGON_CONTROL_QUERY_INFORMATION;
714
715 typedef enum _SYNC_STATE
716 {
717 NormalState = 0,
718 DomainState = 1,
719 GroupState = 2,
720 UasBuiltInGroupState = 3,
721 UserState = 4,
722 GroupMemberState = 5,
723 AliasState = 6,
724 AliasMemberState = 7,
725 SamDoneState = 8
726 } SYNC_STATE, *PSYNC_STATE;
727
728 typedef struct _DOMAIN_NAME_BUFFER
729 {
730 ULONG DomainNameByteCount;
731 [unique, size_is(DomainNameByteCount)] UCHAR *DomainNames;
732 } DOMAIN_NAME_BUFFER, *PDOMAIN_NAME_BUFFER;
733
734 typedef struct _NETLOGON_LSA_POLICY_INFO
735 {
736 ULONG LsaPolicySize;
737 [size_is(LsaPolicySize)] UCHAR *LsaPolicy;
738 } NETLOGON_LSA_POLICY_INFO, *PNETLOGON_LSA_POLICY_INFO;
739
740 typedef struct _NETLOGON_ONE_DOMAIN_INFO
741 {
742 RPC_UNICODE_STRING DomainName;
743 RPC_UNICODE_STRING DnsDomainName;
744 RPC_UNICODE_STRING DnsForestName;
745 GUID DomainGuid;
746 PRPC_SID DomainSid;
747 RPC_UNICODE_STRING TrustExtension;
748 RPC_UNICODE_STRING DummyString2;
749 RPC_UNICODE_STRING DummyString3;
750 RPC_UNICODE_STRING DummyString4;
751 ULONG DummyLong1;
752 ULONG DummyLong2;
753 ULONG DummyLong3;
754 ULONG DummyLong4;
755 } NETLOGON_ONE_DOMAIN_INFO, *PNETLOGON_ONE_DOMAIN_INFO;
756
757 typedef struct _NETLOGON_DOMAIN_INFO
758 {
759 NETLOGON_ONE_DOMAIN_INFO PrimaryDomain;
760 ULONG TrustedDomainCount;
761 [size_is(TrustedDomainCount)] PNETLOGON_ONE_DOMAIN_INFO TrustedDomains;
762 NETLOGON_LSA_POLICY_INFO LsaPolicy;
763 RPC_UNICODE_STRING DnsHostNameInDs;
764 RPC_UNICODE_STRING DummyString2;
765 RPC_UNICODE_STRING DummyString3;
766 RPC_UNICODE_STRING DummyString4;
767 ULONG WorkstationFlags;
768 ULONG SupportedEncTypes;
769 ULONG DummyLong3;
770 ULONG DummyLong4;
771 } NETLOGON_DOMAIN_INFO, *PNETLOGON_DOMAIN_INFO;
772
773 typedef [switch_type(DWORD)] union _NETLOGON_DOMAIN_INFORMATION
774 {
775 [case(1)] PNETLOGON_DOMAIN_INFO DomainInfo;
776 [case(2)] PNETLOGON_LSA_POLICY_INFO LsaPolicyInfo;
777 } NETLOGON_DOMAIN_INFORMATION, *PNETLOGON_DOMAIN_INFORMATION;
778
779 typedef struct _NETLOGON_WORKSTATION_INFO
780 {
781 NETLOGON_LSA_POLICY_INFO LsaPolicy;
782 [string] wchar_t *DnsHostName;
783 [string] wchar_t *SiteName;
784 [string] wchar_t *Dummy1;
785 [string] wchar_t *Dummy2;
786 [string] wchar_t *Dummy3;
787 [string] wchar_t *Dummy4;
788 RPC_UNICODE_STRING OsVersion;
789 RPC_UNICODE_STRING OsName;
790 RPC_UNICODE_STRING DummyString3;
791 RPC_UNICODE_STRING DummyString4;
792 ULONG WorkstationFlags;
793 ULONG KerberosSupportedEncryptionTypes;
794 ULONG DummyLong3;
795 ULONG DummyLong4;
796 } NETLOGON_WORKSTATION_INFO, *PNETLOGON_WORKSTATION_INFO;
797
798 typedef [switch_type(DWORD)] union _NETLOGON_WORKSTATION_INFORMATION
799 {
800 [case(1)] PNETLOGON_WORKSTATION_INFO WorkstationInfo;
801 [case(2)] PNETLOGON_WORKSTATION_INFO LsaPolicyInfo;
802 } NETLOGON_WORKSTATION_INFORMATION, *PNETLOGON_WORKSTATION_INFORMATION;
803
804 typedef struct _NL_SOCKET_ADDRESS
805 {
806 [size_is(iSockaddrLength)] UCHAR *lpSockaddr;
807 ULONG iSockaddrLength;
808 } NL_SOCKET_ADDRESS, *PNL_SOCKET_ADDRESS;
809
810 typedef struct _NL_SITE_NAME_ARRAY
811 {
812 ULONG EntryCount;
813 [size_is(EntryCount)] PRPC_UNICODE_STRING SiteNames;
814 } NL_SITE_NAME_ARRAY, *PNL_SITE_NAME_ARRAY;
815
816 typedef struct _DS_DOMAIN_TRUSTSW
817 {
818 [string] wchar_t *NetbiosDomainName;
819 [string] wchar_t *DnsDomainName;
820 ULONG Flags;
821 ULONG ParentIndex;
822 ULONG TrustType;
823 ULONG TrustAttributes;
824 PRPC_SID DomainSid;
825 GUID DomainGuid;
826 } DS_DOMAIN_TRUSTSW, *PDS_DOMAIN_TRUSTSW;
827
828 typedef struct _NETLOGON_TRUSTED_DOMAIN_ARRAY
829 {
830 DWORD DomainCount;
831 [size_is(DomainCount)] PDS_DOMAIN_TRUSTSW Domains;
832 } NETLOGON_TRUSTED_DOMAIN_ARRAY, *PNETLOGON_TRUSTED_DOMAIN_ARRAY;
833
834 typedef struct _NL_SITE_NAME_EX_ARRAY
835 {
836 ULONG EntryCount;
837 [size_is(EntryCount)] PRPC_UNICODE_STRING SiteNames;
838 [size_is(EntryCount)] PRPC_UNICODE_STRING SubnetNames;
839 } NL_SITE_NAME_EX_ARRAY, *PNL_SITE_NAME_EX_ARRAY;
840
841 typedef struct _NL_GENERIC_RPC_DATA
842 {
843 ULONG UlongEntryCount;
844 [size_is(UlongEntryCount)] ULONG *UlongData;
845 ULONG UnicodeStringEntryCount;
846 [size_is(UnicodeStringEntryCount)] PRPC_UNICODE_STRING UnicodeStringData;
847 } NL_GENERIC_RPC_DATA, *PNL_GENERIC_RPC_DATA;
848
849 typedef struct _NETLOGON_VALIDATION_UAS_INFO
850 {
851 [string] wchar_t *usrlog1_eff_name;
852 DWORD usrlog1_priv;
853 DWORD usrlog1_auth_flags;
854 DWORD usrlog1_num_logons;
855 DWORD usrlog1_bad_pw_count;
856 DWORD usrlog1_last_logon;
857 DWORD usrlog1_last_logoff;
858 DWORD usrlog1_logoff_time;
859 DWORD usrlog1_kickoff_time;
860 DWORD usrlog1_password_age;
861 DWORD usrlog1_pw_can_change;
862 DWORD usrlog1_pw_must_change;
863 [string] wchar_t *usrlog1_computer;
864 [string] wchar_t *usrlog1_domain;
865 [string] wchar_t *usrlog1_script_path;
866 DWORD usrlog1_reserved1;
867 } NETLOGON_VALIDATION_UAS_INFO, *PNETLOGON_VALIDATION_UAS_INFO;
868
869 typedef struct _NETLOGON_LOGOFF_UAS_INFO
870 {
871 DWORD Duration;
872 USHORT LogonCount;
873 } NETLOGON_LOGOFF_UAS_INFORMATION, *PNETLOGON_LOGOFF_UAS_INFO;
874
875 typedef [switch_type(DWORD)] union _NETLOGON_CAPABILITIES
876 {
877 [case(1)] ULONG ServerCapabilities;
878 } NETLOGON_CAPABILITIES, *PNETLOGON_CAPABILITIES;
879
880 typedef struct _NETLOGON_CREDENTIAL
881 {
882 CHAR data[8];
883 } NETLOGON_CREDENTIAL, *PNETLOGON_CREDENTIAL;
884
885 typedef struct _NETLOGON_AUTHENTICATOR
886 {
887 NETLOGON_CREDENTIAL Credential;
888 DWORD Timestamp;
889 } NETLOGON_AUTHENTICATOR, *PNETLOGON_AUTHENTICATOR;
890
891 typedef enum _NETLOGON_SECURE_CHANNEL_TYPE
892 {
893 NullSecureChannel = 0,
894 MsvApSecureChannel = 1,
895 WorkstationSecureChannel = 2,
896 TrustedDnsDomainSecureChannel = 3,
897 TrustedDomainSecureChannel = 4,
898 UasServerSecureChannel = 5,
899 ServerSecureChannel = 6,
900 CdcServerSecureChannel = 7
901 } NETLOGON_SECURE_CHANNEL_TYPE;
902
903 typedef struct _UAS_INFO_0
904 {
905 CHAR ComputerName[16];
906 ULONG TimeCreated;
907 ULONG SerialNumber;
908 } UAS_INFO_0, *PUAS_INFO_0;
909
910 typedef struct _DOMAIN_CONTROLLER_INFOW
911 {
912 [string, unique] wchar_t *DomainControllerName;
913 [string, unique] wchar_t *DomainControllerAddress;
914 ULONG DomainControllerAddressType;
915 GUID DomainGuid;
916 [string, unique] wchar_t *DomainName;
917 [string, unique] wchar_t *DnsForestName;
918 ULONG Flags;
919 [string, unique] wchar_t *DcSiteName;
920 [string, unique] wchar_t *ClientSiteName;
921 } DOMAIN_CONTROLLER_INFOW, *PDOMAIN_CONTROLLER_INFOW;
922
923 typedef struct _NL_TRUST_PASSWORD
924 {
925 WCHAR Buffer[256];
926 ULONG Length;
927 } NL_TRUST_PASSWORD, *PNL_TRUST_PASSWORD;
928
929 typedef struct _NL_PASSWORD_VERSION
930 {
931 ULONG ReservedField;
932 ULONG PasswordVersionNumber;
933 ULONG PasswordVersionPresent;
934 } NL_PASSWORD_VERSION, *PNL_PASSWORD_VERSION;
935
936 cpp_quote("#ifndef _NTSECAPI_H")
937 typedef enum _LSA_FOREST_TRUST_RECORD_TYPE
938 {
939 ForestTrustTopLevelName = 0,
940 ForestTrustTopLevelNameEx = 1,
941 ForestTrustDomainInfo = 2,
942 } LSA_FOREST_TRUST_RECORD_TYPE;
943
944 typedef RPC_UNICODE_STRING LSA_RPC_UNICODE_STRING, *PLSA_RPC_UNICODE_STRING;
945
946 typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO
947 {
948 PRPC_SID Sid;
949 LSA_RPC_UNICODE_STRING DnsName;
950 LSA_RPC_UNICODE_STRING NetbiosName;
951 } LSA_FOREST_TRUST_DOMAIN_INFO, *PLSA_FOREST_TRUST_DOMAIN_INFO;
952
953 typedef struct _LSA_FOREST_TRUST_BINARY_DATA
954 {
955 [range(0, 131072)] ULONG Length;
956 [size_is(Length)] UCHAR * Buffer;
957 } LSA_FOREST_TRUST_BINARY_DATA, *PLSA_FOREST_TRUST_BINARY_DATA;
958
959 typedef struct _LSA_FOREST_TRUST_RECORD
960 {
961 ULONG Flags;
962 LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType;
963 LARGE_INTEGER Time;
964 [switch_type( LSA_FOREST_TRUST_RECORD_TYPE ), switch_is(ForestTrustType)] union
965 {
966 [case(ForestTrustTopLevelName, ForestTrustTopLevelNameEx)] LSA_RPC_UNICODE_STRING TopLevelName;
967 [case(ForestTrustDomainInfo)] LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo;
968 [default] LSA_FOREST_TRUST_BINARY_DATA Data;
969 } ForestTrustData;
970 } LSA_FOREST_TRUST_RECORD, *PLSA_FOREST_TRUST_RECORD;
971
972 typedef struct _LSA_FOREST_TRUST_INFORMATION
973 {
974 [range(0, 4000)] ULONG RecordCount;
975 [size_is(RecordCount)] PLSA_FOREST_TRUST_RECORD *Entries;
976 } LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION;
977 cpp_quote("#endif")
978
979
980 [
981 uuid(12345678-1234-ABCD-EF00-01234567CFFB),
982 version(1.0),
983 pointer_default(unique),
984 #ifdef __midl
985 ms_union,
986 #endif
987 endpoint("ncacn_np:[\\pipe\\netlogon]")
988 #ifndef __midl
989 ,implicit_handle(handle_t hBinding)
990 #endif
991 ]
992 interface logon
993 {
994 /* Function 0 */
995 NET_API_STATUS
996 __stdcall
997 NetrLogonUasLogon(
998 [in, unique, string] LOGONSRV_HANDLE ServerName,
999 [in, string] wchar_t *UserName,
1000 [in, string] wchar_t *Workstation,
1001 [out] PNETLOGON_VALIDATION_UAS_INFO *ValidationInformation);
1002
1003 /* Function 1 */
1004 NET_API_STATUS
1005 __stdcall
1006 NetrLogonUasLogoff(
1007 [in, unique, string] LOGONSRV_HANDLE ServerName,
1008 [in, string] wchar_t *UserName,
1009 [in, string] wchar_t *Workstation,
1010 [out] PNETLOGON_LOGOFF_UAS_INFO LogoffInformation);
1011
1012 /* Function 2 */
1013 NTSTATUS
1014 __stdcall
1015 NetrLogonSamLogon(
1016 [in, unique, string] LOGONSRV_HANDLE LogonServer,
1017 [in, string, unique] wchar_t *ComputerName,
1018 [in, unique] PNETLOGON_AUTHENTICATOR Authenticator,
1019 [in, out, unique] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1020 [in] NETLOGON_LOGON_INFO_CLASS LogonLevel,
1021 [in, switch_is(LogonLevel)] PNETLOGON_LEVEL LogonInformation,
1022 [in] NETLOGON_VALIDATION_INFO_CLASS ValidationLevel,
1023 [out, switch_is(ValidationLevel)] PNETLOGON_VALIDATION ValidationInformation,
1024 [out] UCHAR *Authoritative);
1025
1026 /* Function 3 */
1027 NTSTATUS
1028 __stdcall
1029 NetrLogonSamLogoff(
1030 [in, unique, string] LOGONSRV_HANDLE LogonServer,
1031 [in, string, unique] wchar_t *ComputerName,
1032 [in, unique] PNETLOGON_AUTHENTICATOR Authenticator,
1033 [in, out, unique] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1034 [in] NETLOGON_LOGON_INFO_CLASS LogonLevel,
1035 [in, switch_is(LogonLevel)] PNETLOGON_LEVEL LogonInformation);
1036
1037 /* Function 4 */
1038 NTSTATUS
1039 __stdcall
1040 NetrServerReqChallenge(
1041 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1042 [in, string] wchar_t *ComputerName,
1043 [in] PNETLOGON_CREDENTIAL ClientChallenge,
1044 [out] PNETLOGON_CREDENTIAL ServerChallenge);
1045
1046 /* Function 5 */
1047 NTSTATUS
1048 __stdcall
1049 NetrServerAuthenticate(
1050 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1051 [in, string] wchar_t *AccountName,
1052 [in] NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
1053 [in, string] wchar_t *ComputerName,
1054 [in] PNETLOGON_CREDENTIAL ClientCredential,
1055 [out] PNETLOGON_CREDENTIAL ServerCredential);
1056
1057 /* Function 6 */
1058 NTSTATUS
1059 __stdcall
1060 NetrServerPasswordSet(
1061 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1062 [in, string] wchar_t *AccountName,
1063 [in] NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
1064 [in, string] wchar_t *ComputerName,
1065 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1066 [out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1067 [in] PENCRYPTED_NT_OWF_PASSWORD UasNewPassword);
1068
1069 /* Function 7 */
1070 NTSTATUS
1071 __stdcall
1072 NetrDatabaseDeltas(
1073 [in, string] LOGONSRV_HANDLE PrimaryName,
1074 [in, string] wchar_t *ComputerName,
1075 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1076 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1077 [in] DWORD DatabaseID,
1078 [in, out] PNLPR_MODIFIED_COUNT DomainModifiedCount,
1079 [out] PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray,
1080 [in] DWORD PreferredMaximumLength);
1081
1082 /* Function 8 */
1083 NTSTATUS
1084 __stdcall
1085 NetrDatabaseSync(
1086 [in, string] LOGONSRV_HANDLE PrimaryName,
1087 [in, string] wchar_t *ComputerName,
1088 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1089 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1090 [in] DWORD DatabaseID,
1091 [in, out] ULONG *SyncContext,
1092 [out] PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray,
1093 [in] DWORD PreferredMaximumLength);
1094
1095 /* Function 9 */
1096 NTSTATUS
1097 __stdcall
1098 NetrAccountDeltas(
1099 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1100 [in, string] wchar_t * ComputerName,
1101 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1102 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1103 [in] PUAS_INFO_0 RecordId,
1104 [in] DWORD Count,
1105 [in] DWORD Level,
1106 [out, size_is(BufferSize)] UCHAR *Buffer,
1107 [in] DWORD BufferSize,
1108 [out] ULONG *CountReturned,
1109 [out] ULONG *TotalEntries,
1110 [out] PUAS_INFO_0 NextRecordId);
1111
1112 /* Function 10 */
1113 NTSTATUS
1114 __stdcall
1115 NetrAccountSync(
1116 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1117 [in, string] wchar_t *ComputerName,
1118 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1119 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1120 [in] DWORD Reference,
1121 [in] DWORD Level,
1122 [out, size_is(BufferSize)] UCHAR *Buffer,
1123 [in] DWORD BufferSize,
1124 [out] ULONG *CountReturned,
1125 [out] ULONG *TotalEntries,
1126 [out] ULONG *NextReference,
1127 [out] PUAS_INFO_0 LastRecordId);
1128
1129 /* Function 11 */
1130 NET_API_STATUS
1131 __stdcall
1132 NetrGetDCName(
1133 [in, string] LOGONSRV_HANDLE ServerName,
1134 [in, unique, string] wchar_t *DomainName,
1135 [out, string] wchar_t **Buffer);
1136
1137 /* Function 12 */
1138 NET_API_STATUS
1139 __stdcall
1140 NetrLogonControl(
1141 [in, unique, string] LOGONSRV_HANDLE ServerName,
1142 [in] DWORD FunctionCode,
1143 [in] DWORD QueryLevel,
1144 [out, switch_is(QueryLevel)] PNETLOGON_CONTROL_QUERY_INFORMATION Buffer);
1145
1146 /* Function 13 */
1147 NET_API_STATUS
1148 __stdcall
1149 NetrGetAnyDCName(
1150 [in, unique, string] LOGONSRV_HANDLE ServerName,
1151 [in, unique, string] wchar_t *DomainName,
1152 [out, string] wchar_t **Buffer);
1153
1154 /* Function 14 */
1155 NET_API_STATUS
1156 __stdcall
1157 NetrLogonControl2(
1158 [in, unique, string] LOGONSRV_HANDLE ServerName,
1159 [in] DWORD FunctionCode,
1160 [in] DWORD QueryLevel,
1161 [in, switch_is(FunctionCode)] PNETLOGON_CONTROL_DATA_INFORMATION Data,
1162 [out, switch_is(QueryLevel)] PNETLOGON_CONTROL_QUERY_INFORMATION Buffer);
1163
1164 /* Function 15 */
1165 NTSTATUS
1166 __stdcall
1167 NetrServerAuthenticate2(
1168 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1169 [in, string] wchar_t *AccountName,
1170 [in] NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
1171 [in, string] wchar_t *ComputerName,
1172 [in] PNETLOGON_CREDENTIAL ClientCredential,
1173 [out] PNETLOGON_CREDENTIAL ServerCredential,
1174 [in, out] ULONG *NegotiateFlags);
1175
1176 /* Function 16 */
1177 NTSTATUS
1178 __stdcall
1179 NetrDatabaseSync2(
1180 [in, string] LOGONSRV_HANDLE PrimaryName,
1181 [in, string] wchar_t *ComputerName,
1182 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1183 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1184 [in] DWORD DatabaseID,
1185 [in] SYNC_STATE RestartState,
1186 [in, out] ULONG *SyncContext,
1187 [out] PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray,
1188 [in] DWORD PreferredMaximumLength);
1189
1190 /* Function 17 */
1191 NTSTATUS
1192 __stdcall
1193 NetrDatabaseRedo(
1194 [in, string] LOGONSRV_HANDLE PrimaryName,
1195 [in, string] wchar_t *ComputerName,
1196 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1197 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1198 [in, size_is(ChangeLogEntrySize)] UCHAR *ChangeLogEntry,
1199 [in] DWORD ChangeLogEntrySize,
1200 [out] PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray);
1201
1202 /* Function 18 */
1203 NET_API_STATUS
1204 __stdcall
1205 NetrLogonControl2Ex(
1206 [in, unique, string] LOGONSRV_HANDLE ServerName,
1207 [in] DWORD FunctionCode,
1208 [in] DWORD QueryLevel,
1209 [in, switch_is(FunctionCode)] PNETLOGON_CONTROL_DATA_INFORMATION Data,
1210 [out, switch_is(QueryLevel)] PNETLOGON_CONTROL_QUERY_INFORMATION Buffer);
1211
1212 /* Function 19 */
1213 NTSTATUS
1214 __stdcall
1215 NetrEnumerateTrustedDomains(
1216 [in, unique, string] LOGONSRV_HANDLE ServerName,
1217 [out] PDOMAIN_NAME_BUFFER DomainNameBuffer);
1218
1219 /* Function 20 */
1220 NET_API_STATUS
1221 __stdcall
1222 DsrGetDcName(
1223 [in, unique, string] LOGONSRV_HANDLE ComputerName,
1224 [in, unique, string] wchar_t *DomainName,
1225 [in, unique] GUID *DomainGuid,
1226 [in, unique] GUID *SiteGuid,
1227 [in] ULONG Flags,
1228 [out] PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo);
1229
1230 /* Function 21 */
1231 NTSTATUS
1232 __stdcall
1233 NetrLogonGetCapabilities(
1234 [in, string] LOGONSRV_HANDLE ServerName,
1235 [in, string, unique] wchar_t *ComputerName,
1236 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1237 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1238 [in] DWORD QueryLevel,
1239 [out, switch_is(QueryLevel)] PNETLOGON_CAPABILITIES ServerCapabilities);
1240
1241 /* Function 22 */
1242 NTSTATUS
1243 __stdcall
1244 NetrLogonSetServiceBits(
1245 [in, unique, string] LOGONSRV_HANDLE ServerName,
1246 [in] DWORD ServiceBitsOfInterest,
1247 [in] DWORD ServiceBits);
1248
1249 /* Function 23 */
1250 NET_API_STATUS
1251 __stdcall
1252 NetrLogonGetTrustRid(
1253 [in, unique, string] LOGONSRV_HANDLE ServerName,
1254 [in, string, unique] wchar_t *DomainName,
1255 [out] ULONG *Rid);
1256
1257 /* Function 24 */
1258 NET_API_STATUS
1259 __stdcall
1260 NetrLogonComputeServerDigest(
1261 [in, unique, string] LOGONSRV_HANDLE ServerName,
1262 [in] ULONG Rid,
1263 [in, size_is(MessageSize)] UCHAR *Message,
1264 [in] ULONG MessageSize,
1265 [out] CHAR NewMessageDigest[16],
1266 [out] CHAR OldMessageDigest[16]);
1267
1268 /* Function 25 */
1269 NET_API_STATUS
1270 __stdcall
1271 NetrLogonComputeClientDigest(
1272 [in, unique, string] LOGONSRV_HANDLE ServerName,
1273 [in, string, unique] wchar_t *DomainName,
1274 [in, size_is(MessageSize)] UCHAR *Message,
1275 [in] ULONG MessageSize,
1276 [out] CHAR NewMessageDigest[16],
1277 [out] CHAR OldMessageDigest[16]);
1278
1279 /* Function 26 */
1280 NTSTATUS
1281 __stdcall
1282 NetrServerAuthenticate3(
1283 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1284 [in, string] wchar_t *AccountName,
1285 [in] NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
1286 [in, string] wchar_t *ComputerName,
1287 [in] PNETLOGON_CREDENTIAL ClientCredential,
1288 [out] PNETLOGON_CREDENTIAL ServerCredential,
1289 [in,out] ULONG *NegotiateFlags,
1290 [out] ULONG *AccountRid);
1291
1292 /* Function 27 */
1293 NET_API_STATUS
1294 __stdcall
1295 DsrGetDcNameEx(
1296 [in, unique, string] LOGONSRV_HANDLE ComputerName,
1297 [in, unique, string] wchar_t *DomainName,
1298 [in, unique] GUID *DomainGuid,
1299 [in, unique, string] wchar_t *SiteName,
1300 [in] ULONG Flags,
1301 [out] PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo);
1302
1303 /* Function 28 */
1304 NET_API_STATUS
1305 __stdcall
1306 DsrGetSiteName(
1307 [in, unique, string] LOGONSRV_HANDLE ComputerName,
1308 [out, string] wchar_t **SiteName);
1309
1310 /* Function 29 */
1311 NTSTATUS
1312 __stdcall
1313 NetrLogonGetDomainInfo(
1314 [in, string] LOGONSRV_HANDLE ServerName,
1315 [in, string, unique] wchar_t *ComputerName,
1316 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1317 [in, out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1318 [in] DWORD Level,
1319 [in, switch_is(Level)] PNETLOGON_WORKSTATION_INFORMATION WkstaBuffer,
1320 [out, switch_is(Level)] PNETLOGON_DOMAIN_INFORMATION DomBuffer);
1321
1322 /* Function 30 */
1323 NTSTATUS
1324 __stdcall
1325 NetrServerPasswordSet2(
1326 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1327 [in, string] wchar_t *AccountName,
1328 [in] NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
1329 [in, string] wchar_t *ComputerName,
1330 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1331 [out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1332 [in] PNL_TRUST_PASSWORD ClearNewPassword);
1333
1334 /* Function 31 */
1335 NTSTATUS
1336 __stdcall
1337 NetrServerPasswordGet(
1338 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1339 [in, string] wchar_t *AccountName,
1340 [in] NETLOGON_SECURE_CHANNEL_TYPE AccountType,
1341 [in, string] wchar_t *ComputerName,
1342 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1343 [out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1344 [out] PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword);
1345
1346 /* Function 32 */
1347 NTSTATUS
1348 __stdcall
1349 NetrLogonSendToSam(
1350 [in, unique, string] LOGONSRV_HANDLE PrimaryName,
1351 [in, string] wchar_t *ComputerName,
1352 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1353 [out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1354 [in, size_is(OpaqueBufferSize)] UCHAR *OpaqueBuffer,
1355 [in] ULONG OpaqueBufferSize);
1356
1357 /* Function 33 */
1358 NET_API_STATUS
1359 __stdcall
1360 DsrAddressToSiteNamesW(
1361 [in, unique, string] LOGONSRV_HANDLE ComputerName,
1362 [in, range(0, 32000)] DWORD EntryCount,
1363 [in, size_is(EntryCount)] PNL_SOCKET_ADDRESS SocketAddresses,
1364 [out] PNL_SITE_NAME_ARRAY *SiteNames);
1365
1366 /* Function 34 */
1367 NET_API_STATUS
1368 __stdcall
1369 DsrGetDcNameEx2(
1370 [in, unique, string] LOGONSRV_HANDLE ComputerName,
1371 [in, unique, string] wchar_t *AccountName,
1372 [in] ULONG AllowableAccountControlBits,
1373 [in, unique, string] wchar_t *DomainName,
1374 [in, unique] GUID *DomainGuid,
1375 [in, unique, string] wchar_t *SiteName,
1376 [in] ULONG Flags,
1377 [out] PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo);
1378
1379 /* Function 35 */
1380 NET_API_STATUS
1381 __stdcall
1382 NetrLogonGetTimeServiceParentDomain(
1383 [in, unique, string] LOGONSRV_HANDLE ServerName,
1384 [out, string] wchar_t **DomainName,
1385 [out] int *PdcSameSite);
1386
1387 /* Function 36 */
1388 NET_API_STATUS
1389 __stdcall
1390 NetrEnumerateTrustedDomainsEx(
1391 [in, unique, string] LOGONSRV_HANDLE ServerName,
1392 [out] PNETLOGON_TRUSTED_DOMAIN_ARRAY Domains);
1393
1394 /* Function 37 */
1395 NET_API_STATUS
1396 __stdcall
1397 DsrAddressToSiteNamesExW(
1398 [in, unique, string] LOGONSRV_HANDLE ComputerName,
1399 [in, range(0, 32000)] DWORD EntryCount,
1400 [in, size_is(EntryCount)] PNL_SOCKET_ADDRESS SocketAddresses,
1401 [out] PNL_SITE_NAME_EX_ARRAY *SiteNames);
1402
1403 /* Function 38 */
1404 NET_API_STATUS
1405 __stdcall
1406 DsrGetDcSiteCoverageW(
1407 [in, unique, string] LOGONSRV_HANDLE ServerName,
1408 [out] PNL_SITE_NAME_ARRAY *SiteNames);
1409
1410 /* Function 39 */
1411 NTSTATUS
1412 __stdcall
1413 NetrLogonSamLogonEx(
1414 [in] handle_t ContextHandle,
1415 [in, unique, string] wchar_t *LogonServer,
1416 [in, unique, string] wchar_t *ComputerName,
1417 [in] NETLOGON_LOGON_INFO_CLASS LogonLevel,
1418 [in, switch_is(LogonLevel)] PNETLOGON_LEVEL LogonInformation,
1419 [in] NETLOGON_VALIDATION_INFO_CLASS ValidationLevel,
1420 [out, switch_is(ValidationLevel)] PNETLOGON_VALIDATION ValidationInformation,
1421 [out] UCHAR *Authoritative,
1422 [in,out] ULONG *ExtraFlags);
1423
1424 /* Function 40 */
1425 NET_API_STATUS
1426 __stdcall
1427 DsrEnumerateDomainTrusts(
1428 [in, unique, string] LOGONSRV_HANDLE ServerName,
1429 [in] ULONG Flags,
1430 [out] PNETLOGON_TRUSTED_DOMAIN_ARRAY Domains);
1431
1432 /* Function 41 */
1433 NET_API_STATUS
1434 __stdcall
1435 DsrDeregisterDnsHostRecords (
1436 [in, unique, string] LOGONSRV_HANDLE ServerName,
1437 [in, unique, string] wchar_t *DnsDomainName,
1438 [in, unique] GUID *DomainGuid,
1439 [in, unique] GUID *DsaGuid,
1440 [in, string] wchar_t *DnsHostName);
1441
1442 /* Function 42 */
1443 NTSTATUS
1444 __stdcall
1445 NetrServerTrustPasswordsGet(
1446 [in, unique, string] LOGONSRV_HANDLE TrustedDcName,
1447 [in, string] wchar_t *AccountName,
1448 [in] NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
1449 [in, string] wchar_t *ComputerName,
1450 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1451 [out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1452 [out] PENCRYPTED_NT_OWF_PASSWORD EncryptedNewOwfPassword,
1453 [out] PENCRYPTED_NT_OWF_PASSWORD EncryptedOldOwfPassword);
1454
1455 /* Function 43 */
1456 NET_API_STATUS
1457 __stdcall
1458 DsrGetForestTrustInformation(
1459 [in, unique, string] LOGONSRV_HANDLE ServerName,
1460 [in, unique, string] wchar_t *TrustedDomainName,
1461 [in] DWORD Flags,
1462 [out] PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo);
1463
1464 /* Function 44 */
1465 NTSTATUS
1466 __stdcall
1467 NetrGetForestTrustInformation(
1468 [in, unique, string] LOGONSRV_HANDLE ServerName,
1469 [in, string] wchar_t *ComputerName,
1470 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1471 [out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1472 [in] DWORD Flags,
1473 [out] PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo);
1474
1475 /* Function 45 */
1476 NTSTATUS
1477 __stdcall
1478 NetrLogonSamLogonWithFlags(
1479 [in, unique, string] LOGONSRV_HANDLE LogonServer,
1480 [in, string, unique] wchar_t *ComputerName,
1481 [in, unique] PNETLOGON_AUTHENTICATOR Authenticator,
1482 [in, out, unique] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1483 [in] NETLOGON_LOGON_INFO_CLASS LogonLevel,
1484 [in, switch_is(LogonLevel)] PNETLOGON_LEVEL LogonInformation,
1485 [in] NETLOGON_VALIDATION_INFO_CLASS ValidationLevel,
1486 [out, switch_is(ValidationLevel)] PNETLOGON_VALIDATION ValidationInformation,
1487 [out] UCHAR *Authoritative,
1488 [in,out] ULONG *ExtraFlags);
1489
1490 /* Function 46 */
1491 NTSTATUS
1492 __stdcall
1493 NetrServerGetTrustInfo(
1494 [in, unique, string] LOGONSRV_HANDLE TrustedDcName,
1495 [in, string] wchar_t *AccountName,
1496 [in] NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
1497 [in, string] wchar_t *ComputerName,
1498 [in] PNETLOGON_AUTHENTICATOR Authenticator,
1499 [out] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
1500 [out] PENCRYPTED_NT_OWF_PASSWORD EncryptedNewOwfPassword,
1501 [out] PENCRYPTED_NT_OWF_PASSWORD EncryptedOldOwfPassword,
1502 [out] PNL_GENERIC_RPC_DATA *TrustInfo);
1503 }