Sync with trunk r58687.
[reactos.git] / include / reactos / idl / sam.idl
1 /*
2 * Security Account Manager interface definition
3 */
4
5 #include <ms-dtyp.idl>
6
7 cpp_quote("#ifndef _NTDEF_")
8 typedef long NTSTATUS;
9 cpp_quote("#endif")
10
11 typedef struct _RPC_STRING
12 {
13 unsigned short Length;
14 unsigned short MaximumLength;
15 [size_is(MaximumLength), length_is(Length)] char *Buffer;
16 } RPC_STRING, *PRPC_STRING;
17
18 typedef struct _OLD_LARGE_INTEGER
19 {
20 unsigned long LowPart;
21 long HighPart;
22 } OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER;
23
24 typedef [handle] wchar_t *PSAMPR_SERVER_NAME;
25
26 typedef [context_handle] void *SAMPR_HANDLE;
27
28 typedef struct _ENCRYPTED_LM_OWF_PASSWORD
29 {
30 char data[16];
31 } ENCRYPTED_LM_OWF_PASSWORD, *PENCRYPTED_LM_OWF_PASSWORD, ENCRYPTED_NT_OWF_PASSWORD, *PENCRYPTED_NT_OWF_PASSWORD;
32
33 typedef struct _SAMPR_ULONG_ARRAY
34 {
35 unsigned long Count;
36 [size_is(Count)] unsigned long *Element;
37 } SAMPR_ULONG_ARRAY, *PSAMPR_ULONG_ARRAY;
38
39 typedef struct _SAMPR_SID_INFORMATION
40 {
41 PRPC_SID SidPointer;
42 } SAMPR_SID_INFORMATION, *PSAMPR_SID_INFORMATION;
43
44 typedef struct _SAMPR_PSID_ARRAY
45 {
46 [range(0, 1024)] unsigned long Count;
47 [size_is(Count)] PSAMPR_SID_INFORMATION Sids;
48 } SAMPR_PSID_ARRAY, *PSAMPR_PSID_ARRAY;
49
50 typedef struct _SAMPR_PSID_ARRAY_OUT
51 {
52 unsigned long Count;
53 [size_is(Count)] PSAMPR_SID_INFORMATION Sids;
54 } SAMPR_PSID_ARRAY_OUT, *PSAMPR_PSID_ARRAY_OUT;
55
56 typedef struct _SAMPR_RETURNED_USTRING_ARRAY
57 {
58 unsigned long Count;
59 [size_is(Count)] PRPC_UNICODE_STRING Element;
60 } SAMPR_RETURNED_USTRING_ARRAY, *PSAMPR_RETURNED_USTRING_ARRAY;
61
62 cpp_quote("#ifndef _WINNT_")
63 typedef enum _SID_NAME_USE
64 {
65 SidTypeUser = 1,
66 SidTypeGroup,
67 SidTypeDomain,
68 SidTypeAlias,
69 SidTypeWellKnownGroup,
70 SidTypeDeletedAccount,
71 SidTypeInvalid,
72 SidTypeUnknown,
73 } SID_NAME_USE, *PSID_NAME_USE;
74 cpp_quote("#endif")
75
76 typedef struct RPC_SHORT_BLOB
77 {
78 unsigned short Length;
79 unsigned short MaximumLength;
80 [size_is(MaximumLength/2), length_is(Length/2)]
81 unsigned short* Buffer;
82 } RPC_SHORT_BLOB, *PRPC_SHORT_BLOB;
83
84 typedef struct _SAMPR_RID_ENUMERATION
85 {
86 unsigned long RelativeId;
87 RPC_UNICODE_STRING Name;
88 } SAMPR_RID_ENUMERATION, *PSAMPR_RID_ENUMERATION;
89
90 typedef struct _SAMPR_ENUMERATION_BUFFER
91 {
92 unsigned long EntriesRead;
93 [size_is(EntriesRead)] PSAMPR_RID_ENUMERATION Buffer;
94 } SAMPR_ENUMERATION_BUFFER, *PSAMPR_ENUMERATION_BUFFER;
95
96 typedef struct _SAMPR_SR_SECURITY_DESCRIPTOR
97 {
98 [range(0, 256 * 1024)] unsigned long Length;
99 [size_is(Length)] unsigned char* SecurityDescriptor;
100 } SAMPR_SR_SECURITY_DESCRIPTOR, *PSAMPR_SR_SECURITY_DESCRIPTOR;
101
102 cpp_quote("#ifndef _NTSAM_")
103 typedef struct _GROUP_MEMBERSHIP
104 {
105 unsigned long RelativeId;
106 unsigned long Attributes;
107 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
108 cpp_quote("#endif")
109
110 typedef struct _SAMPR_GET_GROUPS_BUFFER
111 {
112 unsigned long MembershipCount;
113 [size_is(MembershipCount)] PGROUP_MEMBERSHIP Groups;
114 } SAMPR_GET_GROUPS_BUFFER, *PSAMPR_GET_GROUPS_BUFFER;
115
116 typedef struct _SAMPR_GET_MEMBERS_BUFFER
117 {
118 unsigned long MemberCount;
119 [size_is(MemberCount)] unsigned long* Members;
120 [size_is(MemberCount)] unsigned long* Attributes;
121 } SAMPR_GET_MEMBERS_BUFFER, *PSAMPR_GET_MEMBERS_BUFFER;
122
123 typedef struct _SAMPR_REVISION_INFO_V1
124 {
125 unsigned long Revision;
126 unsigned long SupportedFeatures;
127 } SAMPR_REVISION_INFO_V1, *PSAMPR_REVISION_INFO_V1;
128
129 typedef [switch_type(unsigned long)] union
130 {
131 [case(1)] SAMPR_REVISION_INFO_V1 V1;
132 }SAMPR_REVISION_INFO, *PSAMPR_REVISION_INFO;
133
134 typedef struct _USER_DOMAIN_PASSWORD_INFORMATION
135 {
136 unsigned short MinPasswordLength;
137 unsigned long PasswordProperties;
138 } USER_DOMAIN_PASSWORD_INFORMATION, *PUSER_DOMAIN_PASSWORD_INFORMATION;
139
140 cpp_quote("#ifndef _NTSAM_")
141 typedef enum _DOMAIN_SERVER_ENABLE_STATE
142 {
143 DomainServerEnabled = 1,
144 DomainServerDisabled
145 } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
146
147 typedef struct _DOMAIN_STATE_INFORMATION
148 {
149 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
150 } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
151 cpp_quote("#endif")
152
153 cpp_quote("#ifndef _NTSAM_")
154 typedef enum _DOMAIN_SERVER_ROLE
155 {
156 DomainServerRoleBackup = 2,
157 DomainServerRolePrimary = 3
158 } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
159 cpp_quote("#endif")
160
161 cpp_quote("#if !defined(_NTSECAPI_H) && !defined(_NTSAM_)")
162 typedef struct _DOMAIN_PASSWORD_INFORMATION
163 {
164 USHORT MinPasswordLength;
165 USHORT PasswordHistoryLength;
166 ULONG PasswordProperties;
167 OLD_LARGE_INTEGER MaxPasswordAge;
168 OLD_LARGE_INTEGER MinPasswordAge;
169 } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
170 cpp_quote("#endif")
171
172 cpp_quote("#ifndef _NTSAM_")
173 typedef struct _DOMAIN_LOGOFF_INFORMATION
174 {
175 OLD_LARGE_INTEGER ForceLogoff;
176 } DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
177
178 typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
179 {
180 DOMAIN_SERVER_ROLE DomainServerRole;
181 } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
182
183 typedef struct _DOMAIN_MODIFIED_INFORMATION
184 {
185 OLD_LARGE_INTEGER DomainModifiedCount;
186 OLD_LARGE_INTEGER CreationTime;
187 } DOMAIN_MODIFIED_INFORMATION, *PDOMAIN_MODIFIED_INFORMATION;
188
189 typedef struct _DOMAIN_MODIFIED_INFORMATION2
190 {
191 OLD_LARGE_INTEGER DomainModifiedCount;
192 OLD_LARGE_INTEGER CreationTime;
193 OLD_LARGE_INTEGER ModifiedCountAtLastPromotion;
194 } DOMAIN_MODIFIED_INFORMATION2, *PDOMAIN_MODIFIED_INFORMATION2;
195 cpp_quote("#endif")
196
197 cpp_quote("#include <pshpack4.h>")
198 typedef struct _SAMPR_DOMAIN_GENERAL_INFORMATION
199 {
200 OLD_LARGE_INTEGER ForceLogoff;
201 RPC_UNICODE_STRING OemInformation;
202 RPC_UNICODE_STRING DomainName;
203 RPC_UNICODE_STRING ReplicaSourceNodeName;
204 OLD_LARGE_INTEGER DomainModifiedCount;
205 unsigned long DomainServerState;
206 unsigned long DomainServerRole;
207 unsigned char UasCompatibilityRequired;
208 unsigned long UserCount;
209 unsigned long GroupCount;
210 unsigned long AliasCount;
211 } SAMPR_DOMAIN_GENERAL_INFORMATION, *PSAMPR_DOMAIN_GENERAL_INFORMATION;
212
213 typedef struct _SAMPR_DOMAIN_GENERAL_INFORMATION2
214 {
215 SAMPR_DOMAIN_GENERAL_INFORMATION I1;
216 LARGE_INTEGER LockoutDuration;
217 LARGE_INTEGER LockoutObservationWindow;
218 unsigned short LockoutThreshold;
219 } SAMPR_DOMAIN_GENERAL_INFORMATION2, *PSAMPR_DOMAIN_GENERAL_INFORMATION2;
220 cpp_quote("#include <poppack.h>")
221
222 typedef struct _SAMPR_DOMAIN_OEM_INFORMATION
223 {
224 RPC_UNICODE_STRING OemInformation;
225 } SAMPR_DOMAIN_OEM_INFORMATION, *PSAMPR_DOMAIN_OEM_INFORMATION;
226
227 typedef struct _SAMPR_DOMAIN_NAME_INFORMATION
228 {
229 RPC_UNICODE_STRING DomainName;
230 } SAMPR_DOMAIN_NAME_INFORMATION, *PSAMPR_DOMAIN_NAME_INFORMATION;
231
232 typedef struct SAMPR_DOMAIN_REPLICATION_INFORMATION
233 {
234 RPC_UNICODE_STRING ReplicaSourceNodeName;
235 } SAMPR_DOMAIN_REPLICATION_INFORMATION, *PSAMPR_DOMAIN_REPLICATION_INFORMATION;
236
237 typedef struct _SAMPR_DOMAIN_LOCKOUT_INFORMATION
238 {
239 LARGE_INTEGER LockoutDuration;
240 LARGE_INTEGER LockoutObservationWindow;
241 unsigned short LockoutThreshold;
242 } SAMPR_DOMAIN_LOCKOUT_INFORMATION, *PSAMPR_DOMAIN_LOCKOUT_INFORMATION;
243
244 cpp_quote("#ifndef _NTSAM_")
245 typedef enum _DOMAIN_INFORMATION_CLASS
246 {
247 DomainPasswordInformation = 1,
248 DomainGeneralInformation = 2,
249 DomainLogoffInformation = 3,
250 DomainOemInformation = 4,
251 DomainNameInformation = 5,
252 DomainReplicationInformation = 6,
253 DomainServerRoleInformation = 7,
254 DomainModifiedInformation = 8,
255 DomainStateInformation = 9,
256 DomainGeneralInformation2 = 11,
257 DomainLockoutInformation = 12,
258 DomainModifiedInformation2 = 13
259 } DOMAIN_INFORMATION_CLASS;
260 cpp_quote("#endif")
261
262 typedef [switch_type(DOMAIN_INFORMATION_CLASS)] union _SAMPR_DOMAIN_INFO_BUFFER
263 {
264 [case(DomainPasswordInformation)] DOMAIN_PASSWORD_INFORMATION Password;
265 [case(DomainGeneralInformation)] SAMPR_DOMAIN_GENERAL_INFORMATION General;
266 [case(DomainLogoffInformation)] DOMAIN_LOGOFF_INFORMATION Logoff;
267 [case(DomainOemInformation)] SAMPR_DOMAIN_OEM_INFORMATION Oem;
268 [case(DomainNameInformation)] SAMPR_DOMAIN_NAME_INFORMATION Name;
269 [case(DomainServerRoleInformation)] DOMAIN_SERVER_ROLE_INFORMATION Role;
270 [case(DomainReplicationInformation)] SAMPR_DOMAIN_REPLICATION_INFORMATION Replication;
271 [case(DomainModifiedInformation)] DOMAIN_MODIFIED_INFORMATION Modified;
272 [case(DomainStateInformation)] DOMAIN_STATE_INFORMATION State;
273 [case(DomainGeneralInformation2)] SAMPR_DOMAIN_GENERAL_INFORMATION2 General2;
274 [case(DomainLockoutInformation)] SAMPR_DOMAIN_LOCKOUT_INFORMATION Lockout;
275 [case(DomainModifiedInformation2)] DOMAIN_MODIFIED_INFORMATION2 Modified2;
276 } SAMPR_DOMAIN_INFO_BUFFER, *PSAMPR_DOMAIN_INFO_BUFFER;
277
278 typedef enum _DOMAIN_DISPLAY_INFORMATION
279 {
280 DomainDisplayUser = 1,
281 DomainDisplayMachine,
282 DomainDisplayGroup,
283 DomainDisplayOemUser,
284 DomainDisplayOemGroup
285 } DOMAIN_DISPLAY_INFORMATION, *PDOMAIN_DISPLAY_INFORMATION;
286
287 typedef struct _SAMPR_DOMAIN_DISPLAY_USER
288 {
289 unsigned long Index;
290 unsigned long Rid;
291 unsigned long AccountControl;
292 RPC_UNICODE_STRING AccountName;
293 RPC_UNICODE_STRING AdminComment;
294 RPC_UNICODE_STRING FullName;
295 } SAMPR_DOMAIN_DISPLAY_USER, *PSAMPR_DOMAIN_DISPLAY_USER;
296
297 typedef struct _SAMPR_DOMAIN_DISPLAY_MACHINE
298 {
299 unsigned long Index;
300 unsigned long Rid;
301 unsigned long AccountControl;
302 RPC_UNICODE_STRING AccountName;
303 RPC_UNICODE_STRING AdminComment;
304 } SAMPR_DOMAIN_DISPLAY_MACHINE, *PSAMPR_DOMAIN_DISPLAY_MACHINE;
305
306 typedef struct _SAMPR_DOMAIN_DISPLAY_GROUP
307 {
308 unsigned long Index;
309 unsigned long Rid;
310 unsigned long Attributes;
311 RPC_UNICODE_STRING AccountName;
312 RPC_UNICODE_STRING AdminComment;
313 } SAMPR_DOMAIN_DISPLAY_GROUP, *PSAMPR_DOMAIN_DISPLAY_GROUP;
314
315 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_USER
316 {
317 unsigned long Index;
318 RPC_STRING OemAccountName;
319 } SAMPR_DOMAIN_DISPLAY_OEM_USER, *PSAMPR_DOMAIN_DISPLAY_OEM_USER;
320
321 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_GROUP
322 {
323 unsigned long Index;
324 RPC_STRING OemAccountName;
325 } SAMPR_DOMAIN_DISPLAY_OEM_GROUP, *PSAMPR_DOMAIN_DISPLAY_OEM_GROUP;
326
327 typedef struct _SAMPR_DOMAIN_DISPLAY_USER_BUFFER
328 {
329 unsigned long EntriesRead;
330 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_USER Buffer;
331 } SAMPR_DOMAIN_DISPLAY_USER_BUFFER, *PSAMPR_DOMAIN_DISPLAY_USER_BUFFER;
332
333 typedef struct _SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER
334 {
335 unsigned long EntriesRead;
336 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_MACHINE Buffer;
337 } SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER, *PSAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER;
338
339 typedef struct _SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER
340 {
341 unsigned long EntriesRead;
342 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_GROUP Buffer;
343 } SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER, *PSAMPR_DOMAIN_DISPLAY_GROUP_BUFFER;
344
345 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER
346 {
347 unsigned long EntriesRead;
348 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_OEM_USER Buffer;
349 } SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER, *PSAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER;
350
351 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER
352 {
353 unsigned long EntriesRead;
354 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_OEM_GROUP Buffer;
355 } SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER, *PSAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER;
356
357 typedef [switch_type(DOMAIN_DISPLAY_INFORMATION)] union _SAMPR_DISPLAY_INFO_BUFFER
358 {
359 [case(DomainDisplayUser)] SAMPR_DOMAIN_DISPLAY_USER_BUFFER UserInformation;
360 [case(DomainDisplayMachine)] SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER MachineInformation;
361 [case(DomainDisplayGroup)] SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER GroupInformation;
362 [case(DomainDisplayOemUser)] SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER OemUserInformation;
363 [case(DomainDisplayOemGroup)] SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER OemGroupInformation;
364 } SAMPR_DISPLAY_INFO_BUFFER, *PSAMPR_DISPLAY_INFO_BUFFER;
365
366 typedef struct _GROUP_ATTRIBUTE_INFORMATION
367 {
368 unsigned long Attributes;
369 } GROUP_ATTRIBUTE_INFORMATION, *PGROUP_ATTRIBUTE_INFORMATION;
370
371 typedef struct _SAMPR_GROUP_GENERAL_INFORMATION
372 {
373 RPC_UNICODE_STRING Name;
374 unsigned long Attributes;
375 unsigned long MemberCount;
376 RPC_UNICODE_STRING AdminComment;
377 } SAMPR_GROUP_GENERAL_INFORMATION, *PSAMPR_GROUP_GENERAL_INFORMATION;
378
379 typedef struct _SAMPR_GROUP_NAME_INFORMATION
380 {
381 RPC_UNICODE_STRING Name;
382 } SAMPR_GROUP_NAME_INFORMATION, *PSAMPR_GROUP_NAME_INFORMATION;
383
384 typedef struct _SAMPR_GROUP_ADM_COMMENT_INFORMATION
385 {
386 RPC_UNICODE_STRING AdminComment;
387 } SAMPR_GROUP_ADM_COMMENT_INFORMATION, *PSAMPR_GROUP_ADM_COMMENT_INFORMATION;
388
389 cpp_quote("#ifndef _NTSAM_")
390 typedef enum _GROUP_INFORMATION_CLASS
391 {
392 GroupGeneralInformation = 1,
393 GroupNameInformation,
394 GroupAttributeInformation,
395 GroupAdminCommentInformation,
396 GroupReplicationInformation
397 } GROUP_INFORMATION_CLASS;
398 cpp_quote("#endif")
399
400 typedef [switch_type(GROUP_INFORMATION_CLASS)] union _SAMPR_GROUP_INFO_BUFFER
401 {
402 [case(GroupGeneralInformation)] SAMPR_GROUP_GENERAL_INFORMATION General;
403 [case(GroupNameInformation)] SAMPR_GROUP_NAME_INFORMATION Name;
404 [case(GroupAttributeInformation)] GROUP_ATTRIBUTE_INFORMATION Attribute;
405 [case(GroupAdminCommentInformation)] SAMPR_GROUP_ADM_COMMENT_INFORMATION AdminComment;
406 [case(GroupReplicationInformation)] SAMPR_GROUP_GENERAL_INFORMATION DoNotUse;
407 } SAMPR_GROUP_INFO_BUFFER, *PSAMPR_GROUP_INFO_BUFFER;
408
409 typedef struct _SAMPR_ALIAS_GENERAL_INFORMATION
410 {
411 RPC_UNICODE_STRING Name;
412 ULONG MemberCount;
413 RPC_UNICODE_STRING AdminComment;
414 } SAMPR_ALIAS_GENERAL_INFORMATION, *PSAMPR_ALIAS_GENERAL_INFORMATION;
415
416 typedef struct _SAMPR_ALIAS_NAME_INFORMATION
417 {
418 RPC_UNICODE_STRING Name;
419 } SAMPR_ALIAS_NAME_INFORMATION, *PSAMPR_ALIAS_NAME_INFORMATION;
420
421 typedef struct _SAMPR_ALIAS_ADM_COMMENT_INFORMATION
422 {
423 RPC_UNICODE_STRING AdminComment;
424 } SAMPR_ALIAS_ADM_COMMENT_INFORMATION, *PSAMPR_ALIAS_ADM_COMMENT_INFORMATION;
425
426 cpp_quote("#ifndef _NTSAM_")
427 typedef enum _ALIAS_INFORMATION_CLASS
428 {
429 AliasGeneralInformation = 1,
430 AliasNameInformation,
431 AliasAdminCommentInformation,
432 } ALIAS_INFORMATION_CLASS;
433 cpp_quote("#endif")
434
435 typedef [switch_type(ALIAS_INFORMATION_CLASS)] union _SAMPR_ALIAS_INFO_BUFFER
436 {
437 [case(AliasGeneralInformation)] SAMPR_ALIAS_GENERAL_INFORMATION General;
438 [case(AliasNameInformation)] SAMPR_ALIAS_NAME_INFORMATION Name;
439 [case(AliasAdminCommentInformation)] SAMPR_ALIAS_ADM_COMMENT_INFORMATION AdminComment;
440 } SAMPR_ALIAS_INFO_BUFFER, *PSAMPR_ALIAS_INFO_BUFFER;
441
442 typedef struct _SAMPR_ENCRYPTED_USER_PASSWORD
443 {
444 unsigned char Buffer[(256 * 2) + 4];
445 } SAMPR_ENCRYPTED_USER_PASSWORD, *PSAMPR_ENCRYPTED_USER_PASSWORD;
446
447 typedef struct _SAMPR_ENCRYPTED_USER_PASSWORD_NEW
448 {
449 unsigned char Buffer[(256 * 2) + 4 + 16];
450 } SAMPR_ENCRYPTED_USER_PASSWORD_NEW, *PSAMPR_ENCRYPTED_USER_PASSWORD_NEW;
451
452 cpp_quote("#ifndef _NTSAM_")
453 typedef struct _USER_PRIMARY_GROUP_INFORMATION
454 {
455 unsigned long PrimaryGroupId;
456 } USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
457
458 typedef struct _USER_CONTROL_INFORMATION
459 {
460 unsigned long UserAccountControl;
461 } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
462
463 typedef struct _USER_EXPIRES_INFORMATION
464 {
465 OLD_LARGE_INTEGER AccountExpires;
466 } USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
467 cpp_quote("#endif")
468
469 typedef struct _SAMPR_LOGON_HOURS
470 {
471 unsigned short UnitsPerWeek;
472 [size_is(1260), length_is((UnitsPerWeek + 7) / 8)] unsigned char *LogonHours; // FIXME
473 } SAMPR_LOGON_HOURS, *PSAMPR_LOGON_HOURS;
474
475 typedef struct _SAMPR_USER_ALL_INFORMATION
476 {
477 OLD_LARGE_INTEGER LastLogon;
478 OLD_LARGE_INTEGER LastLogoff;
479 OLD_LARGE_INTEGER PasswordLastSet;
480 OLD_LARGE_INTEGER AccountExpires;
481 OLD_LARGE_INTEGER PasswordCanChange;
482 OLD_LARGE_INTEGER PasswordMustChange;
483 RPC_UNICODE_STRING UserName;
484 RPC_UNICODE_STRING FullName;
485 RPC_UNICODE_STRING HomeDirectory;
486 RPC_UNICODE_STRING HomeDirectoryDrive;
487 RPC_UNICODE_STRING ScriptPath;
488 RPC_UNICODE_STRING ProfilePath;
489 RPC_UNICODE_STRING AdminComment;
490 RPC_UNICODE_STRING WorkStations;
491 RPC_UNICODE_STRING UserComment;
492 RPC_UNICODE_STRING Parameters;
493 RPC_SHORT_BLOB LmOwfPassword;
494 RPC_SHORT_BLOB NtOwfPassword;
495 RPC_UNICODE_STRING PrivateData;
496 SAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor;
497 unsigned long UserId;
498 unsigned long PrimaryGroupId;
499 unsigned long UserAccountControl;
500 unsigned long WhichFields;
501 SAMPR_LOGON_HOURS LogonHours;
502 unsigned short BadPasswordCount;
503 unsigned short LogonCount;
504 unsigned short CountryCode;
505 unsigned short CodePage;
506 unsigned char LmPasswordPresent;
507 unsigned char NtPasswordPresent;
508 unsigned char PasswordExpired;
509 unsigned char PrivateDataSensitive;
510 } SAMPR_USER_ALL_INFORMATION, *PSAMPR_USER_ALL_INFORMATION;
511
512 typedef struct _SAMPR_USER_GENERAL_INFORMATION
513 {
514 RPC_UNICODE_STRING UserName;
515 RPC_UNICODE_STRING FullName;
516 unsigned long PrimaryGroupId;
517 RPC_UNICODE_STRING AdminComment;
518 RPC_UNICODE_STRING UserComment;
519 } SAMPR_USER_GENERAL_INFORMATION, *PSAMPR_USER_GENERAL_INFORMATION;
520
521 typedef struct _SAMPR_USER_PREFERENCES_INFORMATION
522 {
523 RPC_UNICODE_STRING UserComment;
524 RPC_UNICODE_STRING Reserved1;
525 unsigned short CountryCode;
526 unsigned short CodePage;
527 } SAMPR_USER_PREFERENCES_INFORMATION, *PSAMPR_USER_PREFERENCES_INFORMATION;
528
529 typedef struct _SAMPR_USER_PARAMETERS_INFORMATION
530 {
531 RPC_UNICODE_STRING Parameters;
532 } SAMPR_USER_PARAMETERS_INFORMATION, *PSAMPR_USER_PARAMETERS_INFORMATION;
533
534 typedef struct _SAMPR_USER_LOGON_INFORMATION
535 {
536 RPC_UNICODE_STRING UserName;
537 RPC_UNICODE_STRING FullName;
538 unsigned long UserId;
539 unsigned long PrimaryGroupId;
540 RPC_UNICODE_STRING HomeDirectory;
541 RPC_UNICODE_STRING HomeDirectoryDrive;
542 RPC_UNICODE_STRING ScriptPath;
543 RPC_UNICODE_STRING ProfilePath;
544 RPC_UNICODE_STRING WorkStations;
545 OLD_LARGE_INTEGER LastLogon;
546 OLD_LARGE_INTEGER LastLogoff;
547 OLD_LARGE_INTEGER PasswordLastSet;
548 OLD_LARGE_INTEGER PasswordCanChange;
549 OLD_LARGE_INTEGER PasswordMustChange;
550 SAMPR_LOGON_HOURS LogonHours;
551 unsigned short BadPasswordCount;
552 unsigned short LogonCount;
553 unsigned long UserAccountControl;
554 } SAMPR_USER_LOGON_INFORMATION, *PSAMPR_USER_LOGON_INFORMATION;
555
556 typedef struct _SAMPR_USER_ACCOUNT_INFORMATION
557 {
558 RPC_UNICODE_STRING UserName;
559 RPC_UNICODE_STRING FullName;
560 unsigned long UserId;
561 unsigned long PrimaryGroupId;
562 RPC_UNICODE_STRING HomeDirectory;
563 RPC_UNICODE_STRING HomeDirectoryDrive;
564 RPC_UNICODE_STRING ScriptPath;
565 RPC_UNICODE_STRING ProfilePath;
566 RPC_UNICODE_STRING AdminComment;
567 RPC_UNICODE_STRING WorkStations;
568 OLD_LARGE_INTEGER LastLogon;
569 OLD_LARGE_INTEGER LastLogoff;
570 SAMPR_LOGON_HOURS LogonHours;
571 unsigned short BadPasswordCount;
572 unsigned short LogonCount;
573 OLD_LARGE_INTEGER PasswordLastSet;
574 OLD_LARGE_INTEGER AccountExpires;
575 unsigned long UserAccountControl;
576 } SAMPR_USER_ACCOUNT_INFORMATION, *PSAMPR_USER_ACCOUNT_INFORMATION;
577
578 typedef struct _SAMPR_USER_A_NAME_INFORMATION
579 {
580 RPC_UNICODE_STRING UserName;
581 } SAMPR_USER_A_NAME_INFORMATION, *PSAMPR_USER_A_NAME_INFORMATION;
582
583 typedef struct _SAMPR_USER_F_NAME_INFORMATION
584 {
585 RPC_UNICODE_STRING FullName;
586 } SAMPR_USER_F_NAME_INFORMATION, *PSAMPR_USER_F_NAME_INFORMATION;
587
588 typedef struct _SAMPR_USER_NAME_INFORMATION
589 {
590 RPC_UNICODE_STRING UserName;
591 RPC_UNICODE_STRING FullName;
592 } SAMPR_USER_NAME_INFORMATION, *PSAMPR_USER_NAME_INFORMATION;
593
594 typedef struct _SAMPR_USER_HOME_INFORMATION
595 {
596 RPC_UNICODE_STRING HomeDirectory;
597 RPC_UNICODE_STRING HomeDirectoryDrive;
598 } SAMPR_USER_HOME_INFORMATION, *PSAMPR_USER_HOME_INFORMATION;
599
600 typedef struct _SAMPR_USER_SCRIPT_INFORMATION
601 {
602 RPC_UNICODE_STRING ScriptPath;
603 } SAMPR_USER_SCRIPT_INFORMATION, *PSAMPR_USER_SCRIPT_INFORMATION;
604
605 typedef struct _SAMPR_USER_PROFILE_INFORMATION
606 {
607 RPC_UNICODE_STRING ProfilePath;
608 } SAMPR_USER_PROFILE_INFORMATION, *PSAMPR_USER_PROFILE_INFORMATION;
609
610 typedef struct _SAMPR_USER_ADMIN_COMMENT_INFORMATION
611 {
612 RPC_UNICODE_STRING AdminComment;
613 } SAMPR_USER_ADMIN_COMMENT_INFORMATION, *PSAMPR_USER_ADMIN_COMMENT_INFORMATION;
614
615 typedef struct _SAMPR_USER_WORKSTATIONS_INFORMATION
616 {
617 RPC_UNICODE_STRING WorkStations;
618 } SAMPR_USER_WORKSTATIONS_INFORMATION, *PSAMPR_USER_WORKSTATIONS_INFORMATION;
619
620 typedef struct _SAMPR_USER_SET_PASSWORD_INFORMATION
621 {
622 // SAMPR_ENCRYPTED_USER_PASSWORD Password;
623 RPC_UNICODE_STRING Password;
624 BOOLEAN PasswordExpired;
625 } SAMPR_USER_SET_PASSWORD_INFORMATION, *PSAMPR_USER_SET_PASSWORD_INFORMATION;
626
627 typedef struct _SAMPR_USER_LOGON_HOURS_INFORMATION
628 {
629 SAMPR_LOGON_HOURS LogonHours;
630 } SAMPR_USER_LOGON_HOURS_INFORMATION, *PSAMPR_USER_LOGON_HOURS_INFORMATION;
631
632 typedef struct _SAMPR_USER_INTERNAL1_INFORMATION
633 {
634 ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword;
635 ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword;
636 BOOLEAN NtPasswordPresent;
637 BOOLEAN LmPasswordPresent;
638 BOOLEAN PasswordExpired;
639 } SAMPR_USER_INTERNAL1_INFORMATION, *PSAMPR_USER_INTERNAL1_INFORMATION;
640
641 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION
642 {
643 SAMPR_USER_ALL_INFORMATION I1;
644 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
645 } SAMPR_USER_INTERNAL4_INFORMATION, *PSAMPR_USER_INTERNAL4_INFORMATION;
646
647 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION_NEW
648 {
649 SAMPR_USER_ALL_INFORMATION I1;
650 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
651 } SAMPR_USER_INTERNAL4_INFORMATION_NEW, *PSAMPR_USER_INTERNAL4_INFORMATION_NEW;
652
653 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION
654 {
655 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
656 BOOLEAN PasswordExpired;
657 } SAMPR_USER_INTERNAL5_INFORMATION, *PSAMPR_USER_INTERNAL5_INFORMATION;
658
659 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION_NEW
660 {
661 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
662 BOOLEAN PasswordExpired;
663 } SAMPR_USER_INTERNAL5_INFORMATION_NEW, *PSAMPR_USER_INTERNAL5_INFORMATION_NEW;
664
665 cpp_quote("#ifndef _NTSAM_")
666 typedef enum _USER_INFORMATION_CLASS
667 {
668 UserGeneralInformation = 1,
669 UserPreferencesInformation = 2,
670 UserLogonInformation = 3,
671 UserLogonHoursInformation = 4,
672 UserAccountInformation = 5,
673 UserNameInformation = 6,
674 UserAccountNameInformation = 7,
675 UserFullNameInformation = 8,
676 UserPrimaryGroupInformation = 9,
677 UserHomeInformation = 10,
678 UserScriptInformation = 11,
679 UserProfileInformation = 12,
680 UserAdminCommentInformation = 13,
681 UserWorkStationsInformation = 14,
682 UserSetPasswordInformation = 15, /* This is missing from the SAM RPC documentation */
683 UserControlInformation = 16,
684 UserExpiresInformation = 17,
685 UserInternal1Information = 18,
686 UserInternal2Information = 19, /* This is missing from the SAM RPC documentation */
687 UserParametersInformation = 20,
688 UserAllInformation = 21,
689 UserInternal3Information = 22, /* This is missing from the SAM RPC documentation */
690 UserInternal4Information = 23,
691 UserInternal5Information = 24,
692 UserInternal4InformationNew = 25,
693 UserInternal5InformationNew = 26,
694 UserInternal6Information, /* This is missing from the SAM RPC documentation */
695 UserExtendedInformation, /* This is missing from the SAM RPC documentation */
696 UserLogonUIInformation, /* This is missing from the SAM RPC documentation */
697 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
698 cpp_quote("#endif")
699
700 typedef [switch_type(USER_INFORMATION_CLASS)] union _SAMPR_USER_INFO_BUFFER
701 {
702 [case(UserGeneralInformation)] SAMPR_USER_GENERAL_INFORMATION General;
703 [case(UserPreferencesInformation)] SAMPR_USER_PREFERENCES_INFORMATION Preferences;
704 [case(UserLogonInformation)] SAMPR_USER_LOGON_INFORMATION Logon;
705 [case(UserLogonHoursInformation)] SAMPR_USER_LOGON_HOURS_INFORMATION LogonHours;
706 [case(UserAccountInformation)] SAMPR_USER_ACCOUNT_INFORMATION Account;
707 [case(UserNameInformation)] SAMPR_USER_NAME_INFORMATION Name;
708 [case(UserAccountNameInformation)] SAMPR_USER_A_NAME_INFORMATION AccountName;
709 [case(UserFullNameInformation)] SAMPR_USER_F_NAME_INFORMATION FullName;
710 [case(UserPrimaryGroupInformation)] USER_PRIMARY_GROUP_INFORMATION PrimaryGroup;
711 [case(UserHomeInformation)] SAMPR_USER_HOME_INFORMATION Home;
712 [case(UserScriptInformation)] SAMPR_USER_SCRIPT_INFORMATION Script;
713 [case(UserProfileInformation)] SAMPR_USER_PROFILE_INFORMATION Profile;
714 [case(UserAdminCommentInformation)] SAMPR_USER_ADMIN_COMMENT_INFORMATION AdminComment;
715 [case(UserWorkStationsInformation)] SAMPR_USER_WORKSTATIONS_INFORMATION WorkStations;
716 [case(UserSetPasswordInformation)] SAMPR_USER_SET_PASSWORD_INFORMATION SetPassword;
717 [case(UserControlInformation)] USER_CONTROL_INFORMATION Control;
718 [case(UserExpiresInformation)] USER_EXPIRES_INFORMATION Expires;
719 [case(UserInternal1Information)] SAMPR_USER_INTERNAL1_INFORMATION Internal1;
720 [case(UserParametersInformation)] SAMPR_USER_PARAMETERS_INFORMATION Parameters;
721 [case(UserAllInformation)] SAMPR_USER_ALL_INFORMATION All;
722 [case(UserInternal4Information)] SAMPR_USER_INTERNAL4_INFORMATION Internal4;
723 [case(UserInternal5Information)] SAMPR_USER_INTERNAL5_INFORMATION Internal5;
724 [case(UserInternal4InformationNew)] SAMPR_USER_INTERNAL4_INFORMATION_NEW Internal4New;
725 [case(UserInternal5InformationNew)] SAMPR_USER_INTERNAL5_INFORMATION_NEW Internal5New;
726 } SAMPR_USER_INFO_BUFFER, *PSAMPR_USER_INFO_BUFFER;
727
728 typedef enum _PASSWORD_POLICY_VALIDATION_TYPE
729 {
730 SamValidateAuthentication = 1,
731 SamValidatePasswordChange,
732 SamValidatePasswordReset
733 } PASSWORD_POLICY_VALIDATION_TYPE;
734
735 typedef struct _SAM_VALIDATE_PASSWORD_HASH
736 {
737 unsigned long Length;
738 [unique,size_is(Length)] unsigned char* Hash;
739 } SAM_VALIDATE_PASSWORD_HASH, *PSAM_VALIDATE_PASSWORD_HASH;
740
741 typedef struct _SAM_VALIDATE_PERSISTED_FIELDS
742 {
743 unsigned long PresentFields;
744 LARGE_INTEGER PasswordLastSet;
745 LARGE_INTEGER BadPasswordTime;
746 LARGE_INTEGER LockoutTime;
747 unsigned long BadPasswordCount;
748 unsigned long PasswordHistoryLength;
749 [unique,size_is(PasswordHistoryLength)] PSAM_VALIDATE_PASSWORD_HASH PasswordHistory;
750 } SAM_VALIDATE_PERSISTED_FIELDS, *PSAM_VALIDATE_PERSISTED_FIELDS;
751
752 typedef enum _SAM_VALIDATE_VALIDATION_STATUS
753 {
754 SamValidateSuccess = 0,
755 SamValidatePasswordMustChange,
756 SamValidateAccountLockedOut,
757 SamValidatePasswordExpired,
758 SamValidatePasswordIncorrect,
759 SamValidatePasswordIsInHistory,
760 SamValidatePasswordTooShort,
761 SamValidatePasswordTooLong,
762 SamValidatePasswordNotComplexEnough,
763 SamValidatePasswordTooRecent,
764 SamValidatePasswordFilterError
765 } SAM_VALIDATE_VALIDATION_STATUS, *PSAM_VALIDATE_VALIDATION_STATUS;
766
767 typedef struct _SAM_VALIDATE_STANDARD_OUTPUT_ARG
768 {
769 SAM_VALIDATE_PERSISTED_FIELDS ChangedPersistedFields;
770 SAM_VALIDATE_VALIDATION_STATUS ValidationStatus;
771 } SAM_VALIDATE_STANDARD_OUTPUT_ARG, *PSAM_VALIDATE_STANDARD_OUTPUT_ARG;
772
773 typedef struct _SAM_VALIDATE_AUTHENTICATION_INPUT_ARG
774 {
775 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
776 unsigned char PasswordMatched;
777 } SAM_VALIDATE_AUTHENTICATION_INPUT_ARG, *PSAM_VALIDATE_AUTHENTICATION_INPUT_ARG;
778
779 typedef struct _SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG
780 {
781 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
782 RPC_UNICODE_STRING ClearPassword;
783 RPC_UNICODE_STRING UserAccountName;
784 SAM_VALIDATE_PASSWORD_HASH HashedPassword;
785 unsigned char PasswordMatch;
786 } SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG, *PSAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
787
788 typedef struct _SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG
789 {
790 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
791 RPC_UNICODE_STRING ClearPassword;
792 RPC_UNICODE_STRING UserAccountName;
793 SAM_VALIDATE_PASSWORD_HASH HashedPassword;
794 unsigned char PasswordMustChangeAtNextLogon;
795 unsigned char ClearLockout;
796 } SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG, *PSAM_VALIDATE_PASSWORD_RESET_INPUT_ARG;
797
798 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_INPUT_ARG
799 {
800 [case(SamValidateAuthentication)] SAM_VALIDATE_AUTHENTICATION_INPUT_ARG ValidateAuthenticationInput;
801 [case(SamValidatePasswordChange)] SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG ValidatePasswordChangeInput;
802 [case(SamValidatePasswordReset)] SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG ValidatePasswordResetInput;
803 } SAM_VALIDATE_INPUT_ARG, *PSAM_VALIDATE_INPUT_ARG;
804
805 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_OUTPUT_ARG
806 {
807 [case(SamValidateAuthentication)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidateAuthenticationOutput;
808 [case(SamValidatePasswordChange)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidatePasswordChangeOutput;
809 [case(SamValidatePasswordReset)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidatePasswordResetOutput;
810 } SAM_VALIDATE_OUTPUT_ARG, *PSAM_VALIDATE_OUTPUT_ARG;
811
812 [
813 uuid(12345778-1234-ABCD-EF00-0123456789AC),
814 version(1.0),
815 pointer_default(unique),
816 endpoint("ncacn_np:[\\pipe\\samr]")
817 #ifndef __midl
818 ,explicit_handle
819 #endif
820 ]
821 interface samr
822 {
823 /* Function 0 */
824 NTSTATUS
825 __stdcall
826 SamrConnect(
827 [in, unique] PSAMPR_SERVER_NAME ServerName,
828 [out] SAMPR_HANDLE *ServerHandle,
829 [in] ACCESS_MASK DesiredAccess);
830
831 /* Function 1 */
832 NTSTATUS
833 __stdcall
834 SamrCloseHandle(
835 [in,out] SAMPR_HANDLE *SamHandle);
836
837 /* Function 2 */
838 NTSTATUS
839 __stdcall
840 SamrSetSecurityObject(
841 [in] SAMPR_HANDLE ObjectHandle,
842 [in] SECURITY_INFORMATION SecurityInformation,
843 [in] PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor);
844
845 /* Function 3 */
846 NTSTATUS
847 __stdcall
848 SamrQuerySecurityObject(
849 [in] SAMPR_HANDLE ObjectHandle,
850 [in] SECURITY_INFORMATION SecurityInformation,
851 [out] PSAMPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor);
852
853 /* Function 4 */
854 NTSTATUS
855 __stdcall
856 SamrShutdownSamServer(
857 [in] SAMPR_HANDLE ServerHandle);
858
859 /* Function 5 */
860 NTSTATUS
861 __stdcall
862 SamrLookupDomainInSamServer(
863 [in] SAMPR_HANDLE ServerHandle,
864 [in] PRPC_UNICODE_STRING Name,
865 [out] PRPC_SID *DomainId);
866
867 /* Function 6 */
868 NTSTATUS
869 __stdcall
870 SamrEnumerateDomainsInSamServer(
871 [in] SAMPR_HANDLE ServerHandle,
872 [in,out] unsigned long *EnumerationContext,
873 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
874 [in] unsigned long PreferedMaximumLength,
875 [out] unsigned long *CountReturned);
876
877 /* Function 7 */
878 NTSTATUS
879 __stdcall
880 SamrOpenDomain(
881 [in] SAMPR_HANDLE ServerHandle,
882 [in] ACCESS_MASK DesiredAccess,
883 [in] PRPC_SID DomainId,
884 [out] SAMPR_HANDLE *DomainHandle);
885
886 /* Function 8 */
887 NTSTATUS
888 __stdcall
889 SamrQueryInformationDomain(
890 [in] SAMPR_HANDLE DomainHandle,
891 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
892 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
893
894 /* Function 9 */
895 NTSTATUS
896 __stdcall
897 SamrSetInformationDomain(
898 [in] SAMPR_HANDLE DomainHandle,
899 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
900 [in, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER DomainInformation);
901
902 /* Function 10 */
903 NTSTATUS
904 __stdcall
905 SamrCreateGroupInDomain(
906 [in] SAMPR_HANDLE DomainHandle,
907 [in] PRPC_UNICODE_STRING Name,
908 [in] ACCESS_MASK DesiredAccess,
909 [out] SAMPR_HANDLE *GroupHandle,
910 [out] unsigned long *RelativeId);
911
912 /* Function 11 */
913 NTSTATUS
914 __stdcall
915 SamrEnumerateGroupsInDomain(
916 [in] SAMPR_HANDLE DomainHandle,
917 [in,out] unsigned long *EnumerationContext,
918 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
919 [in] unsigned long PreferedMaximumLength,
920 [out] unsigned long *CountReturned);
921
922 /* Function 12 */
923 NTSTATUS
924 __stdcall
925 SamrCreateUserInDomain([in] SAMPR_HANDLE DomainHandle,
926 [in] PRPC_UNICODE_STRING Name,
927 [in] ACCESS_MASK DesiredAccess,
928 [out] SAMPR_HANDLE *UserHandle,
929 [out] unsigned long *RelativeId);
930
931 /* Function 13 */
932 NTSTATUS
933 __stdcall
934 SamrEnumerateUsersInDomain([in] SAMPR_HANDLE DomainHandle,
935 [in,out] unsigned long *EnumerationContext,
936 [in] unsigned long UserAccountControl,
937 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
938 [in] unsigned long PreferedMaximumLength,
939 [out] unsigned long *CountReturned);
940
941 /* Function 14 */
942 NTSTATUS
943 __stdcall
944 SamrCreateAliasInDomain([in] SAMPR_HANDLE DomainHandle,
945 [in] PRPC_UNICODE_STRING AccountName,
946 [in] ACCESS_MASK DesiredAccess,
947 [out] SAMPR_HANDLE *AliasHandle,
948 [out] unsigned long *RelativeId);
949
950 /* Function 15 */
951 NTSTATUS
952 __stdcall
953 SamrEnumerateAliasesInDomain([in] SAMPR_HANDLE DomainHandle,
954 [in,out] unsigned long *EnumerationContext,
955 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
956 [in] unsigned long PreferedMaximumLength,
957 [out] unsigned long *CountReturned);
958
959 /* Function 16 */
960 NTSTATUS
961 __stdcall
962 SamrGetAliasMembership([in] SAMPR_HANDLE DomainHandle,
963 [in] PSAMPR_PSID_ARRAY SidArray,
964 [out] PSAMPR_ULONG_ARRAY Membership);
965
966 /* Function 17 */
967 NTSTATUS
968 __stdcall
969 SamrLookupNamesInDomain([in] SAMPR_HANDLE DomainHandle,
970 [in, range(0, 1000)] unsigned long Count,
971 [in, size_is(1000), length_is(Count)] RPC_UNICODE_STRING Names[*],
972 [out] PSAMPR_ULONG_ARRAY RelativeIds,
973 [out] PSAMPR_ULONG_ARRAY Use);
974
975 /* Function 18 */
976 NTSTATUS
977 __stdcall
978 SamrLookupIdsInDomain(
979 [in] SAMPR_HANDLE DomainHandle,
980 [in, range(0, 1000)] unsigned long Count,
981 [in, size_is(1000), length_is(Count)] unsigned long *RelativeIds,
982 [out] PSAMPR_RETURNED_USTRING_ARRAY Names,
983 [out] PSAMPR_ULONG_ARRAY Use);
984
985 /* Function 19 */
986 NTSTATUS
987 __stdcall
988 SamrOpenGroup(
989 [in] SAMPR_HANDLE DomainHandle,
990 [in] ACCESS_MASK DesiredAccess,
991 [in] unsigned long GroupId,
992 [out] SAMPR_HANDLE *GroupHandle);
993
994 /* Function 20 */
995 NTSTATUS
996 __stdcall
997 SamrQueryInformationGroup(
998 [in] SAMPR_HANDLE GroupHandle,
999 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1000 [out, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER *Buffer);
1001
1002 /* Function 21 */
1003 NTSTATUS
1004 __stdcall
1005 SamrSetInformationGroup(
1006 [in] SAMPR_HANDLE GroupHandle,
1007 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1008 [in, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER Buffer);
1009
1010 /* Function 22 */
1011 NTSTATUS
1012 __stdcall
1013 SamrAddMemberToGroup(
1014 [in] SAMPR_HANDLE GroupHandle,
1015 [in] unsigned long MemberId,
1016 [in] unsigned long Attributes);
1017
1018 /* Function 21 */
1019 NTSTATUS
1020 __stdcall
1021 SamrDeleteGroup(
1022 [in,out] SAMPR_HANDLE *GroupHandle);
1023
1024 /* Function 24 */
1025 NTSTATUS
1026 __stdcall
1027 SamrRemoveMemberFromGroup(
1028 [in] SAMPR_HANDLE GroupHandle,
1029 [in] unsigned long MemberId);
1030
1031 /* Function 25 */
1032 NTSTATUS
1033 __stdcall
1034 SamrGetMembersInGroup(
1035 [in] SAMPR_HANDLE GroupHandle,
1036 [out] PSAMPR_GET_MEMBERS_BUFFER *Members);
1037
1038 /* Function 26 */
1039 NTSTATUS
1040 __stdcall
1041 SamrSetMemberAttributesOfGroup(
1042 [in] SAMPR_HANDLE GroupHandle,
1043 [in] unsigned long MemberId,
1044 [in] unsigned long Attributes);
1045
1046 /* Function 27 */
1047 NTSTATUS
1048 __stdcall
1049 SamrOpenAlias(
1050 [in] SAMPR_HANDLE DomainHandle,
1051 [in] ACCESS_MASK DesiredAccess,
1052 [in] ULONG AliasId,
1053 [out] SAMPR_HANDLE *AliasHandle);
1054
1055 /* Function 28 */
1056 NTSTATUS
1057 __stdcall
1058 SamrQueryInformationAlias(
1059 [in] SAMPR_HANDLE AliasHandle,
1060 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1061 [out, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER *Buffer);
1062
1063 /* Function 29 */
1064 NTSTATUS
1065 __stdcall
1066 SamrSetInformationAlias(
1067 [in] SAMPR_HANDLE AliasHandle,
1068 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1069 [in, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER Buffer);
1070
1071 /* Function 30 */
1072 NTSTATUS
1073 __stdcall
1074 SamrDeleteAlias(
1075 [in, out] SAMPR_HANDLE *AliasHandle);
1076
1077 /* Function 31 */
1078 NTSTATUS
1079 __stdcall
1080 SamrAddMemberToAlias(
1081 [in] SAMPR_HANDLE AliasHandle,
1082 [in] PRPC_SID MemberId);
1083
1084 /* Function 32 */
1085 NTSTATUS
1086 __stdcall
1087 SamrRemoveMemberFromAlias(
1088 [in] SAMPR_HANDLE AliasHandle,
1089 [in] PRPC_SID MemberId);
1090
1091 /* Function 33 */
1092 NTSTATUS
1093 __stdcall
1094 SamrGetMembersInAlias(
1095 [in] SAMPR_HANDLE AliasHandle,
1096 [out] PSAMPR_PSID_ARRAY_OUT Members);
1097
1098 /* Function 34 */
1099 NTSTATUS
1100 __stdcall
1101 SamrOpenUser(
1102 [in] SAMPR_HANDLE DomainHandle,
1103 [in] ACCESS_MASK DesiredAccess,
1104 [in] ULONG UserId,
1105 [out] SAMPR_HANDLE *UserHandle);
1106
1107 /* Function 35 */
1108 NTSTATUS
1109 __stdcall
1110 SamrDeleteUser(
1111 [in,out] SAMPR_HANDLE *UserHandle);
1112
1113 /* Function 36 */
1114 NTSTATUS
1115 __stdcall
1116 SamrQueryInformationUser(
1117 [in] SAMPR_HANDLE UserHandle,
1118 [in] USER_INFORMATION_CLASS UserInformationClass,
1119 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
1120
1121 /* Function 37 */
1122 NTSTATUS
1123 __stdcall
1124 SamrSetInformationUser(
1125 [in] SAMPR_HANDLE UserHandle,
1126 [in] USER_INFORMATION_CLASS UserInformationClass,
1127 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
1128
1129 /* Function 38 */
1130 NTSTATUS
1131 __stdcall
1132 SamrChangePasswordUser(
1133 [in] SAMPR_HANDLE UserHandle,
1134 [in] unsigned char LmPresent,
1135 [in, unique] PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm,
1136 [in, unique] PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm,
1137 [in] unsigned char NtPresent,
1138 [in, unique] PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt,
1139 [in, unique] PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt,
1140 [in] unsigned char NtCrossEncryptionPresent,
1141 [in, unique] PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm,
1142 [in] unsigned char LmCrossEncryptionPresent,
1143 [in, unique] PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt);
1144
1145 /* Function 39 */
1146 NTSTATUS
1147 __stdcall
1148 SamrGetGroupsForUser(
1149 [in] SAMPR_HANDLE UserHandle,
1150 [out] PSAMPR_GET_GROUPS_BUFFER *Groups);
1151
1152 /* Function 40 */
1153 NTSTATUS
1154 __stdcall
1155 SamrQueryDisplayInformation(
1156 [in] SAMPR_HANDLE DomainHandle,
1157 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1158 [in] unsigned long Index,
1159 [in] unsigned long EntryCount,
1160 [in] unsigned long PreferredMaximumLength,
1161 [out] unsigned long * TotalAvailable,
1162 [out] unsigned long * TotalReturned,
1163 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1164
1165 /* Function 41 */
1166 NTSTATUS
1167 __stdcall
1168 SamrGetDisplayEnumerationIndex(
1169 [in] SAMPR_HANDLE DomainHandle,
1170 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1171 [in] PRPC_UNICODE_STRING Prefix,
1172 [out] unsigned long *Index);
1173
1174 /* Function 42 */
1175 NTSTATUS
1176 __stdcall
1177 SamrTestPrivateFunctionsDomain(
1178 [in] SAMPR_HANDLE DomainHandle);
1179
1180 /* Function 43 */
1181 NTSTATUS
1182 __stdcall
1183 SamrTestPrivateFunctionsUser(
1184 [in] SAMPR_HANDLE UserHandle);
1185
1186 /* Function 44 */
1187 NTSTATUS
1188 __stdcall
1189 SamrGetUserDomainPasswordInformation(
1190 [in] SAMPR_HANDLE UserHandle,
1191 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1192
1193 /* Function 45 */
1194 NTSTATUS
1195 __stdcall
1196 SamrRemoveMemberFromForeignDomain(
1197 [in] SAMPR_HANDLE DomainHandle,
1198 [in] PRPC_SID MemberSid);
1199
1200 /* Function 46 */
1201 NTSTATUS
1202 __stdcall
1203 SamrQueryInformationDomain2(
1204 [in] SAMPR_HANDLE DomainHandle,
1205 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
1206 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
1207
1208 /* Function 47 */
1209 NTSTATUS
1210 __stdcall
1211 SamrQueryInformationUser2(
1212 [in] SAMPR_HANDLE UserHandle,
1213 [in] USER_INFORMATION_CLASS UserInformationClass,
1214 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
1215
1216 /* Function 48 */
1217 NTSTATUS
1218 __stdcall
1219 SamrQueryDisplayInformation2(
1220 [in] SAMPR_HANDLE DomainHandle,
1221 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1222 [in] unsigned long Index,
1223 [in] unsigned long EntryCount,
1224 [in] unsigned long PreferredMaximumLength,
1225 [out] unsigned long *TotalAvailable,
1226 [out] unsigned long *TotalReturned,
1227 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1228
1229 /* Function 49 */
1230 NTSTATUS
1231 __stdcall
1232 SamrGetDisplayEnumerationIndex2(
1233 [in] SAMPR_HANDLE DomainHandle,
1234 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1235 [in] PRPC_UNICODE_STRING Prefix,
1236 [out] unsigned long *Index);
1237
1238 /* Function 50 */
1239 NTSTATUS
1240 __stdcall
1241 SamrCreateUser2InDomain(
1242 [in] SAMPR_HANDLE DomainHandle,
1243 [in] PRPC_UNICODE_STRING Name,
1244 [in] unsigned long AccountType,
1245 [in] ACCESS_MASK DesiredAccess,
1246 [out] SAMPR_HANDLE *UserHandle,
1247 [out] unsigned long *GrantedAccess,
1248 [out] unsigned long *RelativeId);
1249
1250 /* Function 51 */
1251 NTSTATUS
1252 __stdcall
1253 SamrQueryDisplayInformation3(
1254 [in] SAMPR_HANDLE DomainHandle,
1255 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1256 [in] unsigned long Index,
1257 [in] unsigned long EntryCount,
1258 [in] unsigned long PreferredMaximumLength,
1259 [out] unsigned long *TotalAvailable,
1260 [out] unsigned long *TotalReturned,
1261 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1262
1263 /* Function 52 */
1264 NTSTATUS
1265 __stdcall
1266 SamrAddMultipleMembersToAlias(
1267 [in] SAMPR_HANDLE AliasHandle,
1268 [in] PSAMPR_PSID_ARRAY MembersBuffer);
1269
1270 /* Function 53 */
1271 NTSTATUS
1272 __stdcall
1273 SamrRemoveMultipleMembersFromAlias(
1274 [in] SAMPR_HANDLE AliasHandle,
1275 [in] PSAMPR_PSID_ARRAY MembersBuffer);
1276
1277 /* Function 54 */
1278 NTSTATUS
1279 __stdcall
1280 SamrOemChangePasswordUser2(
1281 [in] handle_t BindingHandle,
1282 [in,unique] PRPC_STRING ServerName,
1283 [in] PRPC_STRING UserName,
1284 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
1285 [in,unique] PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewLm);
1286
1287 /* Function 55 */
1288 NTSTATUS
1289 __stdcall
1290 SamrUnicodeChangePasswordUser2(
1291 [in] handle_t BindingHandle,
1292 [in,unique] PRPC_UNICODE_STRING ServerName,
1293 [in] PRPC_UNICODE_STRING UserName,
1294 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldNt,
1295 [in,unique] PENCRYPTED_NT_OWF_PASSWORD OldNtOwfPasswordEncryptedWithNewNt,
1296 [in] unsigned char LmPresent,
1297 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
1298 [in,unique] PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewNt);
1299
1300 /* Function 56 */
1301 NTSTATUS
1302 __stdcall
1303 SamrGetDomainPasswordInformation(
1304 [in] handle_t BindingHandle,
1305 [in,unique] PRPC_UNICODE_STRING Unused,
1306 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1307
1308 /* Function 57 */
1309 NTSTATUS
1310 __stdcall
1311 SamrConnect2(
1312 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1313 [out] SAMPR_HANDLE *ServerHandle,
1314 [in] ACCESS_MASK DesiredAccess);
1315
1316 /* Function 58 */
1317 NTSTATUS
1318 __stdcall
1319 SamrSetInformationUser2(
1320 [in] SAMPR_HANDLE UserHandle,
1321 [in] USER_INFORMATION_CLASS UserInformationClass,
1322 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
1323
1324 /* Function 59 */
1325 NTSTATUS
1326 __stdcall
1327 SamrSetBootKeyInformation(
1328 [in] handle_t BindingHandle); /* FIXME */
1329
1330 /* Function 60 */
1331 NTSTATUS
1332 __stdcall
1333 SamrGetBootKeyInformation(
1334 [in] handle_t BindingHandle); /* FIXME */
1335
1336 /* Function 61 */
1337 NTSTATUS
1338 __stdcall
1339 SamrConnect3(
1340 [in] handle_t BindingHandle); /* FIXME */
1341
1342 /* Function 62 */
1343 NTSTATUS
1344 __stdcall
1345 SamrConnect4(
1346 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1347 [out] SAMPR_HANDLE *ServerHandle,
1348 [in] unsigned long ClientRevision,
1349 [in] ACCESS_MASK DesiredAccess);
1350
1351 /* Function 63 */
1352 NTSTATUS
1353 __stdcall
1354 SamrUnicodeChangePasswordUser3(
1355 [in] handle_t BindingHandle); /* FIXME */
1356
1357 /* Function 64 */
1358 NTSTATUS
1359 __stdcall
1360 SamrConnect5(
1361 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1362 [in] ACCESS_MASK DesiredAccess,
1363 [in] unsigned long InVersion,
1364 [in,switch_is(InVersion)] SAMPR_REVISION_INFO *InRevisionInfo,
1365 [out] unsigned long *OutVersion,
1366 [out,switch_is(*OutVersion)] SAMPR_REVISION_INFO *OutRevisionInfo,
1367 [out] SAMPR_HANDLE *ServerHandle);
1368
1369 /* Function 65 */
1370 NTSTATUS
1371 __stdcall
1372 SamrRidToSid(
1373 [in] SAMPR_HANDLE ObjectHandle,
1374 [in] unsigned long Rid,
1375 [out] PRPC_SID *Sid);
1376
1377 /* Function 66 */
1378 NTSTATUS
1379 __stdcall
1380 SamrSetDSRMPassword(
1381 [in] handle_t BindingHandle,
1382 [in,unique] PRPC_UNICODE_STRING Unused,
1383 [in] unsigned long UserId,
1384 [in,unique] PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword);
1385
1386 /* Function 67 */
1387 NTSTATUS
1388 __stdcall
1389 SamrValidatePassword(
1390 [in] handle_t Handle,
1391 [in] PASSWORD_POLICY_VALIDATION_TYPE ValidationType,
1392 [in,switch_is(ValidationType)] PSAM_VALIDATE_INPUT_ARG InputArg,
1393 [out,switch_is(ValidationType)] PSAM_VALIDATE_OUTPUT_ARG *OutputArg);
1394 }