2 * Security Account Manager interface definition
7 cpp_quote("#ifndef _NTDEF_")
11 typedef struct _RPC_STRING
13 unsigned short Length;
14 unsigned short MaximumLength;
15 [size_is(MaximumLength), length_is(Length)] char *Buffer;
16 } RPC_STRING, *PRPC_STRING;
18 typedef struct _OLD_LARGE_INTEGER
20 unsigned long LowPart;
22 } OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER;
24 typedef [handle] wchar_t *PSAMPR_SERVER_NAME;
26 typedef [context_handle] void *SAMPR_HANDLE;
28 typedef struct _ENCRYPTED_LM_OWF_PASSWORD
31 } ENCRYPTED_LM_OWF_PASSWORD, *PENCRYPTED_LM_OWF_PASSWORD, ENCRYPTED_NT_OWF_PASSWORD, *PENCRYPTED_NT_OWF_PASSWORD;
33 typedef struct _SAMPR_ULONG_ARRAY
36 [size_is(Count)] unsigned long *Element;
37 } SAMPR_ULONG_ARRAY, *PSAMPR_ULONG_ARRAY;
39 typedef struct _SAMPR_SID_INFORMATION
42 } SAMPR_SID_INFORMATION, *PSAMPR_SID_INFORMATION;
44 typedef struct _SAMPR_PSID_ARRAY
46 [range(0, 1024)] unsigned long Count;
47 [size_is(Count)] PSAMPR_SID_INFORMATION Sids;
48 } SAMPR_PSID_ARRAY, *PSAMPR_PSID_ARRAY;
50 typedef struct _SAMPR_PSID_ARRAY_OUT
53 [size_is(Count)] PSAMPR_SID_INFORMATION Sids;
54 } SAMPR_PSID_ARRAY_OUT, *PSAMPR_PSID_ARRAY_OUT;
56 typedef struct _SAMPR_RETURNED_USTRING_ARRAY
59 [size_is(Count)] PRPC_UNICODE_STRING Element;
60 } SAMPR_RETURNED_USTRING_ARRAY, *PSAMPR_RETURNED_USTRING_ARRAY;
62 cpp_quote("#ifndef _WINNT_")
63 typedef enum _SID_NAME_USE
69 SidTypeWellKnownGroup,
70 SidTypeDeletedAccount,
73 } SID_NAME_USE, *PSID_NAME_USE;
76 typedef struct RPC_SHORT_BLOB
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;
84 typedef struct _SAMPR_RID_ENUMERATION
86 unsigned long RelativeId;
87 RPC_UNICODE_STRING Name;
88 } SAMPR_RID_ENUMERATION, *PSAMPR_RID_ENUMERATION;
90 typedef struct _SAMPR_ENUMERATION_BUFFER
92 unsigned long EntriesRead;
93 [size_is(EntriesRead)] PSAMPR_RID_ENUMERATION Buffer;
94 } SAMPR_ENUMERATION_BUFFER, *PSAMPR_ENUMERATION_BUFFER;
96 typedef struct _SAMPR_SR_SECURITY_DESCRIPTOR
98 [range(0, 256 * 1024)] unsigned long Length;
99 [size_is(Length)] unsigned char* SecurityDescriptor;
100 } SAMPR_SR_SECURITY_DESCRIPTOR, *PSAMPR_SR_SECURITY_DESCRIPTOR;
102 cpp_quote("#ifndef _NTSAM_")
103 typedef struct _GROUP_MEMBERSHIP
105 unsigned long RelativeId;
106 unsigned long Attributes;
107 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
110 typedef struct _SAMPR_GET_GROUPS_BUFFER
112 unsigned long MembershipCount;
113 [size_is(MembershipCount)] PGROUP_MEMBERSHIP Groups;
114 } SAMPR_GET_GROUPS_BUFFER, *PSAMPR_GET_GROUPS_BUFFER;
116 typedef struct _SAMPR_GET_MEMBERS_BUFFER
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;
123 typedef struct _SAMPR_REVISION_INFO_V1
125 unsigned long Revision;
126 unsigned long SupportedFeatures;
127 } SAMPR_REVISION_INFO_V1, *PSAMPR_REVISION_INFO_V1;
129 typedef [switch_type(unsigned long)] union
131 [case(1)] SAMPR_REVISION_INFO_V1 V1;
132 }SAMPR_REVISION_INFO, *PSAMPR_REVISION_INFO;
134 typedef struct _USER_DOMAIN_PASSWORD_INFORMATION
136 unsigned short MinPasswordLength;
137 unsigned long PasswordProperties;
138 } USER_DOMAIN_PASSWORD_INFORMATION, *PUSER_DOMAIN_PASSWORD_INFORMATION;
140 cpp_quote("#ifndef _NTSAM_")
141 typedef enum _DOMAIN_SERVER_ENABLE_STATE
143 DomainServerEnabled = 1,
145 } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
147 typedef struct _DOMAIN_STATE_INFORMATION
149 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
150 } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
153 cpp_quote("#ifndef _NTSAM_")
154 typedef enum _DOMAIN_SERVER_ROLE
156 DomainServerRoleBackup = 2,
157 DomainServerRolePrimary = 3
158 } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
161 cpp_quote("#if !defined(_NTSECAPI_H) && !defined(_NTSAM_)")
162 typedef struct _DOMAIN_PASSWORD_INFORMATION
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;
172 cpp_quote("#ifndef _NTSAM_")
173 typedef struct _DOMAIN_LOGOFF_INFORMATION
175 OLD_LARGE_INTEGER ForceLogoff;
176 } DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
178 typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
180 DOMAIN_SERVER_ROLE DomainServerRole;
181 } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
183 typedef struct _DOMAIN_MODIFIED_INFORMATION
185 OLD_LARGE_INTEGER DomainModifiedCount;
186 OLD_LARGE_INTEGER CreationTime;
187 } DOMAIN_MODIFIED_INFORMATION, *PDOMAIN_MODIFIED_INFORMATION;
189 typedef struct _DOMAIN_MODIFIED_INFORMATION2
191 OLD_LARGE_INTEGER DomainModifiedCount;
192 OLD_LARGE_INTEGER CreationTime;
193 OLD_LARGE_INTEGER ModifiedCountAtLastPromotion;
194 } DOMAIN_MODIFIED_INFORMATION2, *PDOMAIN_MODIFIED_INFORMATION2;
197 cpp_quote("#include <pshpack4.h>")
198 typedef struct _SAMPR_DOMAIN_GENERAL_INFORMATION
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;
213 typedef struct _SAMPR_DOMAIN_GENERAL_INFORMATION2
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>")
222 typedef struct _SAMPR_DOMAIN_OEM_INFORMATION
224 RPC_UNICODE_STRING OemInformation;
225 } SAMPR_DOMAIN_OEM_INFORMATION, *PSAMPR_DOMAIN_OEM_INFORMATION;
227 typedef struct _SAMPR_DOMAIN_NAME_INFORMATION
229 RPC_UNICODE_STRING DomainName;
230 } SAMPR_DOMAIN_NAME_INFORMATION, *PSAMPR_DOMAIN_NAME_INFORMATION;
232 typedef struct SAMPR_DOMAIN_REPLICATION_INFORMATION
234 RPC_UNICODE_STRING ReplicaSourceNodeName;
235 } SAMPR_DOMAIN_REPLICATION_INFORMATION, *PSAMPR_DOMAIN_REPLICATION_INFORMATION;
237 typedef struct _SAMPR_DOMAIN_LOCKOUT_INFORMATION
239 LARGE_INTEGER LockoutDuration;
240 LARGE_INTEGER LockoutObservationWindow;
241 unsigned short LockoutThreshold;
242 } SAMPR_DOMAIN_LOCKOUT_INFORMATION, *PSAMPR_DOMAIN_LOCKOUT_INFORMATION;
244 cpp_quote("#ifndef _NTSAM_")
245 typedef enum _DOMAIN_INFORMATION_CLASS
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;
262 typedef [switch_type(DOMAIN_INFORMATION_CLASS)] union _SAMPR_DOMAIN_INFO_BUFFER
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;
278 typedef enum _DOMAIN_DISPLAY_INFORMATION
280 DomainDisplayUser = 1,
281 DomainDisplayMachine,
283 DomainDisplayOemUser,
284 DomainDisplayOemGroup
285 } DOMAIN_DISPLAY_INFORMATION, *PDOMAIN_DISPLAY_INFORMATION;
287 typedef struct _SAMPR_DOMAIN_DISPLAY_USER
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;
297 typedef struct _SAMPR_DOMAIN_DISPLAY_MACHINE
301 unsigned long AccountControl;
302 RPC_UNICODE_STRING AccountName;
303 RPC_UNICODE_STRING AdminComment;
304 } SAMPR_DOMAIN_DISPLAY_MACHINE, *PSAMPR_DOMAIN_DISPLAY_MACHINE;
306 typedef struct _SAMPR_DOMAIN_DISPLAY_GROUP
310 unsigned long Attributes;
311 RPC_UNICODE_STRING AccountName;
312 RPC_UNICODE_STRING AdminComment;
313 } SAMPR_DOMAIN_DISPLAY_GROUP, *PSAMPR_DOMAIN_DISPLAY_GROUP;
315 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_USER
318 RPC_STRING OemAccountName;
319 } SAMPR_DOMAIN_DISPLAY_OEM_USER, *PSAMPR_DOMAIN_DISPLAY_OEM_USER;
321 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_GROUP
324 RPC_STRING OemAccountName;
325 } SAMPR_DOMAIN_DISPLAY_OEM_GROUP, *PSAMPR_DOMAIN_DISPLAY_OEM_GROUP;
327 typedef struct _SAMPR_DOMAIN_DISPLAY_USER_BUFFER
329 unsigned long EntriesRead;
330 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_USER Buffer;
331 } SAMPR_DOMAIN_DISPLAY_USER_BUFFER, *PSAMPR_DOMAIN_DISPLAY_USER_BUFFER;
333 typedef struct _SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER
335 unsigned long EntriesRead;
336 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_MACHINE Buffer;
337 } SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER, *PSAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER;
339 typedef struct _SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER
341 unsigned long EntriesRead;
342 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_GROUP Buffer;
343 } SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER, *PSAMPR_DOMAIN_DISPLAY_GROUP_BUFFER;
345 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER
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;
351 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER
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;
357 typedef [switch_type(DOMAIN_DISPLAY_INFORMATION)] union _SAMPR_DISPLAY_INFO_BUFFER
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;
366 typedef struct _GROUP_ATTRIBUTE_INFORMATION
368 unsigned long Attributes;
369 } GROUP_ATTRIBUTE_INFORMATION, *PGROUP_ATTRIBUTE_INFORMATION;
371 typedef struct _SAMPR_GROUP_GENERAL_INFORMATION
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;
379 typedef struct _SAMPR_GROUP_NAME_INFORMATION
381 RPC_UNICODE_STRING Name;
382 } SAMPR_GROUP_NAME_INFORMATION, *PSAMPR_GROUP_NAME_INFORMATION;
384 typedef struct _SAMPR_GROUP_ADM_COMMENT_INFORMATION
386 RPC_UNICODE_STRING AdminComment;
387 } SAMPR_GROUP_ADM_COMMENT_INFORMATION, *PSAMPR_GROUP_ADM_COMMENT_INFORMATION;
389 cpp_quote("#ifndef _NTSAM_")
390 typedef enum _GROUP_INFORMATION_CLASS
392 GroupGeneralInformation = 1,
393 GroupNameInformation,
394 GroupAttributeInformation,
395 GroupAdminCommentInformation,
396 GroupReplicationInformation
397 } GROUP_INFORMATION_CLASS;
400 typedef [switch_type(GROUP_INFORMATION_CLASS)] union _SAMPR_GROUP_INFO_BUFFER
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;
409 typedef struct _SAMPR_ALIAS_GENERAL_INFORMATION
411 RPC_UNICODE_STRING Name;
413 RPC_UNICODE_STRING AdminComment;
414 } SAMPR_ALIAS_GENERAL_INFORMATION, *PSAMPR_ALIAS_GENERAL_INFORMATION;
416 typedef struct _SAMPR_ALIAS_NAME_INFORMATION
418 RPC_UNICODE_STRING Name;
419 } SAMPR_ALIAS_NAME_INFORMATION, *PSAMPR_ALIAS_NAME_INFORMATION;
421 typedef struct _SAMPR_ALIAS_ADM_COMMENT_INFORMATION
423 RPC_UNICODE_STRING AdminComment;
424 } SAMPR_ALIAS_ADM_COMMENT_INFORMATION, *PSAMPR_ALIAS_ADM_COMMENT_INFORMATION;
426 cpp_quote("#ifndef _NTSAM_")
427 typedef enum _ALIAS_INFORMATION_CLASS
429 AliasGeneralInformation = 1,
430 AliasNameInformation,
431 AliasAdminCommentInformation,
432 } ALIAS_INFORMATION_CLASS;
435 typedef [switch_type(ALIAS_INFORMATION_CLASS)] union _SAMPR_ALIAS_INFO_BUFFER
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;
442 typedef struct _SAMPR_ENCRYPTED_USER_PASSWORD
444 unsigned char Buffer[(256 * 2) + 4];
445 } SAMPR_ENCRYPTED_USER_PASSWORD, *PSAMPR_ENCRYPTED_USER_PASSWORD;
447 typedef struct _SAMPR_ENCRYPTED_USER_PASSWORD_NEW
449 unsigned char Buffer[(256 * 2) + 4 + 16];
450 } SAMPR_ENCRYPTED_USER_PASSWORD_NEW, *PSAMPR_ENCRYPTED_USER_PASSWORD_NEW;
452 cpp_quote("#ifndef _NTSAM_")
453 typedef struct _USER_PRIMARY_GROUP_INFORMATION
455 unsigned long PrimaryGroupId;
456 } USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
458 typedef struct _USER_CONTROL_INFORMATION
460 unsigned long UserAccountControl;
461 } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
463 typedef struct _USER_EXPIRES_INFORMATION
465 OLD_LARGE_INTEGER AccountExpires;
466 } USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
469 typedef struct _SAMPR_LOGON_HOURS
471 unsigned short UnitsPerWeek;
472 // [size_is(1260), length_is((UnitsPerWeek + 7) / 8)] unsigned char *LogonHours; // FIXME
473 [size_is(1260)] unsigned char *LogonHours;
474 } SAMPR_LOGON_HOURS, *PSAMPR_LOGON_HOURS;
476 typedef struct _SAMPR_USER_ALL_INFORMATION
478 OLD_LARGE_INTEGER LastLogon;
479 OLD_LARGE_INTEGER LastLogoff;
480 OLD_LARGE_INTEGER PasswordLastSet;
481 OLD_LARGE_INTEGER AccountExpires;
482 OLD_LARGE_INTEGER PasswordCanChange;
483 OLD_LARGE_INTEGER PasswordMustChange;
484 RPC_UNICODE_STRING UserName;
485 RPC_UNICODE_STRING FullName;
486 RPC_UNICODE_STRING HomeDirectory;
487 RPC_UNICODE_STRING HomeDirectoryDrive;
488 RPC_UNICODE_STRING ScriptPath;
489 RPC_UNICODE_STRING ProfilePath;
490 RPC_UNICODE_STRING AdminComment;
491 RPC_UNICODE_STRING WorkStations;
492 RPC_UNICODE_STRING UserComment;
493 RPC_UNICODE_STRING Parameters;
494 RPC_SHORT_BLOB LmOwfPassword;
495 RPC_SHORT_BLOB NtOwfPassword;
496 RPC_UNICODE_STRING PrivateData;
497 SAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor;
498 unsigned long UserId;
499 unsigned long PrimaryGroupId;
500 unsigned long UserAccountControl;
501 unsigned long WhichFields;
502 SAMPR_LOGON_HOURS LogonHours;
503 unsigned short BadPasswordCount;
504 unsigned short LogonCount;
505 unsigned short CountryCode;
506 unsigned short CodePage;
507 unsigned char LmPasswordPresent;
508 unsigned char NtPasswordPresent;
509 unsigned char PasswordExpired;
510 unsigned char PrivateDataSensitive;
511 } SAMPR_USER_ALL_INFORMATION, *PSAMPR_USER_ALL_INFORMATION;
513 typedef struct _SAMPR_USER_GENERAL_INFORMATION
515 RPC_UNICODE_STRING UserName;
516 RPC_UNICODE_STRING FullName;
517 unsigned long PrimaryGroupId;
518 RPC_UNICODE_STRING AdminComment;
519 RPC_UNICODE_STRING UserComment;
520 } SAMPR_USER_GENERAL_INFORMATION, *PSAMPR_USER_GENERAL_INFORMATION;
522 typedef struct _SAMPR_USER_PREFERENCES_INFORMATION
524 RPC_UNICODE_STRING UserComment;
525 RPC_UNICODE_STRING Reserved1;
526 unsigned short CountryCode;
527 unsigned short CodePage;
528 } SAMPR_USER_PREFERENCES_INFORMATION, *PSAMPR_USER_PREFERENCES_INFORMATION;
530 typedef struct _SAMPR_USER_PARAMETERS_INFORMATION
532 RPC_UNICODE_STRING Parameters;
533 } SAMPR_USER_PARAMETERS_INFORMATION, *PSAMPR_USER_PARAMETERS_INFORMATION;
535 typedef struct _SAMPR_USER_LOGON_INFORMATION
537 RPC_UNICODE_STRING UserName;
538 RPC_UNICODE_STRING FullName;
539 unsigned long UserId;
540 unsigned long PrimaryGroupId;
541 RPC_UNICODE_STRING HomeDirectory;
542 RPC_UNICODE_STRING HomeDirectoryDrive;
543 RPC_UNICODE_STRING ScriptPath;
544 RPC_UNICODE_STRING ProfilePath;
545 RPC_UNICODE_STRING WorkStations;
546 OLD_LARGE_INTEGER LastLogon;
547 OLD_LARGE_INTEGER LastLogoff;
548 OLD_LARGE_INTEGER PasswordLastSet;
549 OLD_LARGE_INTEGER PasswordCanChange;
550 OLD_LARGE_INTEGER PasswordMustChange;
551 SAMPR_LOGON_HOURS LogonHours;
552 unsigned short BadPasswordCount;
553 unsigned short LogonCount;
554 unsigned long UserAccountControl;
555 } SAMPR_USER_LOGON_INFORMATION, *PSAMPR_USER_LOGON_INFORMATION;
557 typedef struct _SAMPR_USER_ACCOUNT_INFORMATION
559 RPC_UNICODE_STRING UserName;
560 RPC_UNICODE_STRING FullName;
561 unsigned long UserId;
562 unsigned long PrimaryGroupId;
563 RPC_UNICODE_STRING HomeDirectory;
564 RPC_UNICODE_STRING HomeDirectoryDrive;
565 RPC_UNICODE_STRING ScriptPath;
566 RPC_UNICODE_STRING ProfilePath;
567 RPC_UNICODE_STRING AdminComment;
568 RPC_UNICODE_STRING WorkStations;
569 OLD_LARGE_INTEGER LastLogon;
570 OLD_LARGE_INTEGER LastLogoff;
571 SAMPR_LOGON_HOURS LogonHours;
572 unsigned short BadPasswordCount;
573 unsigned short LogonCount;
574 OLD_LARGE_INTEGER PasswordLastSet;
575 OLD_LARGE_INTEGER AccountExpires;
576 unsigned long UserAccountControl;
577 } SAMPR_USER_ACCOUNT_INFORMATION, *PSAMPR_USER_ACCOUNT_INFORMATION;
579 typedef struct _SAMPR_USER_A_NAME_INFORMATION
581 RPC_UNICODE_STRING UserName;
582 } SAMPR_USER_A_NAME_INFORMATION, *PSAMPR_USER_A_NAME_INFORMATION;
584 typedef struct _SAMPR_USER_F_NAME_INFORMATION
586 RPC_UNICODE_STRING FullName;
587 } SAMPR_USER_F_NAME_INFORMATION, *PSAMPR_USER_F_NAME_INFORMATION;
589 typedef struct _SAMPR_USER_NAME_INFORMATION
591 RPC_UNICODE_STRING UserName;
592 RPC_UNICODE_STRING FullName;
593 } SAMPR_USER_NAME_INFORMATION, *PSAMPR_USER_NAME_INFORMATION;
595 typedef struct _SAMPR_USER_HOME_INFORMATION
597 RPC_UNICODE_STRING HomeDirectory;
598 RPC_UNICODE_STRING HomeDirectoryDrive;
599 } SAMPR_USER_HOME_INFORMATION, *PSAMPR_USER_HOME_INFORMATION;
601 typedef struct _SAMPR_USER_SCRIPT_INFORMATION
603 RPC_UNICODE_STRING ScriptPath;
604 } SAMPR_USER_SCRIPT_INFORMATION, *PSAMPR_USER_SCRIPT_INFORMATION;
606 typedef struct _SAMPR_USER_PROFILE_INFORMATION
608 RPC_UNICODE_STRING ProfilePath;
609 } SAMPR_USER_PROFILE_INFORMATION, *PSAMPR_USER_PROFILE_INFORMATION;
611 typedef struct _SAMPR_USER_ADMIN_COMMENT_INFORMATION
613 RPC_UNICODE_STRING AdminComment;
614 } SAMPR_USER_ADMIN_COMMENT_INFORMATION, *PSAMPR_USER_ADMIN_COMMENT_INFORMATION;
616 typedef struct _SAMPR_USER_WORKSTATIONS_INFORMATION
618 RPC_UNICODE_STRING WorkStations;
619 } SAMPR_USER_WORKSTATIONS_INFORMATION, *PSAMPR_USER_WORKSTATIONS_INFORMATION;
621 typedef struct _SAMPR_USER_SET_PASSWORD_INFORMATION
623 // SAMPR_ENCRYPTED_USER_PASSWORD Password;
624 RPC_UNICODE_STRING Password;
625 BOOLEAN PasswordExpired;
626 } SAMPR_USER_SET_PASSWORD_INFORMATION, *PSAMPR_USER_SET_PASSWORD_INFORMATION;
628 typedef struct _SAMPR_USER_LOGON_HOURS_INFORMATION
630 SAMPR_LOGON_HOURS LogonHours;
631 } SAMPR_USER_LOGON_HOURS_INFORMATION, *PSAMPR_USER_LOGON_HOURS_INFORMATION;
633 typedef struct _SAMPR_USER_INTERNAL1_INFORMATION
635 ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword;
636 ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword;
637 BOOLEAN NtPasswordPresent;
638 BOOLEAN LmPasswordPresent;
639 BOOLEAN PasswordExpired;
640 } SAMPR_USER_INTERNAL1_INFORMATION, *PSAMPR_USER_INTERNAL1_INFORMATION;
642 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION
644 SAMPR_USER_ALL_INFORMATION I1;
645 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
646 } SAMPR_USER_INTERNAL4_INFORMATION, *PSAMPR_USER_INTERNAL4_INFORMATION;
648 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION_NEW
650 SAMPR_USER_ALL_INFORMATION I1;
651 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
652 } SAMPR_USER_INTERNAL4_INFORMATION_NEW, *PSAMPR_USER_INTERNAL4_INFORMATION_NEW;
654 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION
656 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
657 BOOLEAN PasswordExpired;
658 } SAMPR_USER_INTERNAL5_INFORMATION, *PSAMPR_USER_INTERNAL5_INFORMATION;
660 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION_NEW
662 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
663 BOOLEAN PasswordExpired;
664 } SAMPR_USER_INTERNAL5_INFORMATION_NEW, *PSAMPR_USER_INTERNAL5_INFORMATION_NEW;
666 cpp_quote("#ifndef _NTSAM_")
667 typedef enum _USER_INFORMATION_CLASS
669 UserGeneralInformation = 1,
670 UserPreferencesInformation = 2,
671 UserLogonInformation = 3,
672 UserLogonHoursInformation = 4,
673 UserAccountInformation = 5,
674 UserNameInformation = 6,
675 UserAccountNameInformation = 7,
676 UserFullNameInformation = 8,
677 UserPrimaryGroupInformation = 9,
678 UserHomeInformation = 10,
679 UserScriptInformation = 11,
680 UserProfileInformation = 12,
681 UserAdminCommentInformation = 13,
682 UserWorkStationsInformation = 14,
683 UserSetPasswordInformation = 15, /* This is missing from the SAM RPC documentation */
684 UserControlInformation = 16,
685 UserExpiresInformation = 17,
686 UserInternal1Information = 18,
687 UserInternal2Information = 19, /* This is missing from the SAM RPC documentation */
688 UserParametersInformation = 20,
689 UserAllInformation = 21,
690 UserInternal3Information = 22, /* This is missing from the SAM RPC documentation */
691 UserInternal4Information = 23,
692 UserInternal5Information = 24,
693 UserInternal4InformationNew = 25,
694 UserInternal5InformationNew = 26,
695 UserInternal6Information, /* This is missing from the SAM RPC documentation */
696 UserExtendedInformation, /* This is missing from the SAM RPC documentation */
697 UserLogonUIInformation, /* This is missing from the SAM RPC documentation */
698 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
701 typedef [switch_type(USER_INFORMATION_CLASS)] union _SAMPR_USER_INFO_BUFFER
703 [case(UserGeneralInformation)] SAMPR_USER_GENERAL_INFORMATION General;
704 [case(UserPreferencesInformation)] SAMPR_USER_PREFERENCES_INFORMATION Preferences;
705 [case(UserLogonInformation)] SAMPR_USER_LOGON_INFORMATION Logon;
706 [case(UserLogonHoursInformation)] SAMPR_USER_LOGON_HOURS_INFORMATION LogonHours;
707 [case(UserAccountInformation)] SAMPR_USER_ACCOUNT_INFORMATION Account;
708 [case(UserNameInformation)] SAMPR_USER_NAME_INFORMATION Name;
709 [case(UserAccountNameInformation)] SAMPR_USER_A_NAME_INFORMATION AccountName;
710 [case(UserFullNameInformation)] SAMPR_USER_F_NAME_INFORMATION FullName;
711 [case(UserPrimaryGroupInformation)] USER_PRIMARY_GROUP_INFORMATION PrimaryGroup;
712 [case(UserHomeInformation)] SAMPR_USER_HOME_INFORMATION Home;
713 [case(UserScriptInformation)] SAMPR_USER_SCRIPT_INFORMATION Script;
714 [case(UserProfileInformation)] SAMPR_USER_PROFILE_INFORMATION Profile;
715 [case(UserAdminCommentInformation)] SAMPR_USER_ADMIN_COMMENT_INFORMATION AdminComment;
716 [case(UserWorkStationsInformation)] SAMPR_USER_WORKSTATIONS_INFORMATION WorkStations;
717 [case(UserSetPasswordInformation)] SAMPR_USER_SET_PASSWORD_INFORMATION SetPassword;
718 [case(UserControlInformation)] USER_CONTROL_INFORMATION Control;
719 [case(UserExpiresInformation)] USER_EXPIRES_INFORMATION Expires;
720 [case(UserInternal1Information)] SAMPR_USER_INTERNAL1_INFORMATION Internal1;
721 [case(UserParametersInformation)] SAMPR_USER_PARAMETERS_INFORMATION Parameters;
722 [case(UserAllInformation)] SAMPR_USER_ALL_INFORMATION All;
723 [case(UserInternal4Information)] SAMPR_USER_INTERNAL4_INFORMATION Internal4;
724 [case(UserInternal5Information)] SAMPR_USER_INTERNAL5_INFORMATION Internal5;
725 [case(UserInternal4InformationNew)] SAMPR_USER_INTERNAL4_INFORMATION_NEW Internal4New;
726 [case(UserInternal5InformationNew)] SAMPR_USER_INTERNAL5_INFORMATION_NEW Internal5New;
727 } SAMPR_USER_INFO_BUFFER, *PSAMPR_USER_INFO_BUFFER;
729 typedef enum _PASSWORD_POLICY_VALIDATION_TYPE
731 SamValidateAuthentication = 1,
732 SamValidatePasswordChange,
733 SamValidatePasswordReset
734 } PASSWORD_POLICY_VALIDATION_TYPE;
736 typedef struct _SAM_VALIDATE_PASSWORD_HASH
738 unsigned long Length;
739 [unique,size_is(Length)] unsigned char* Hash;
740 } SAM_VALIDATE_PASSWORD_HASH, *PSAM_VALIDATE_PASSWORD_HASH;
742 typedef struct _SAM_VALIDATE_PERSISTED_FIELDS
744 unsigned long PresentFields;
745 LARGE_INTEGER PasswordLastSet;
746 LARGE_INTEGER BadPasswordTime;
747 LARGE_INTEGER LockoutTime;
748 unsigned long BadPasswordCount;
749 unsigned long PasswordHistoryLength;
750 [unique,size_is(PasswordHistoryLength)] PSAM_VALIDATE_PASSWORD_HASH PasswordHistory;
751 } SAM_VALIDATE_PERSISTED_FIELDS, *PSAM_VALIDATE_PERSISTED_FIELDS;
753 typedef enum _SAM_VALIDATE_VALIDATION_STATUS
755 SamValidateSuccess = 0,
756 SamValidatePasswordMustChange,
757 SamValidateAccountLockedOut,
758 SamValidatePasswordExpired,
759 SamValidatePasswordIncorrect,
760 SamValidatePasswordIsInHistory,
761 SamValidatePasswordTooShort,
762 SamValidatePasswordTooLong,
763 SamValidatePasswordNotComplexEnough,
764 SamValidatePasswordTooRecent,
765 SamValidatePasswordFilterError
766 } SAM_VALIDATE_VALIDATION_STATUS, *PSAM_VALIDATE_VALIDATION_STATUS;
768 typedef struct _SAM_VALIDATE_STANDARD_OUTPUT_ARG
770 SAM_VALIDATE_PERSISTED_FIELDS ChangedPersistedFields;
771 SAM_VALIDATE_VALIDATION_STATUS ValidationStatus;
772 } SAM_VALIDATE_STANDARD_OUTPUT_ARG, *PSAM_VALIDATE_STANDARD_OUTPUT_ARG;
774 typedef struct _SAM_VALIDATE_AUTHENTICATION_INPUT_ARG
776 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
777 unsigned char PasswordMatched;
778 } SAM_VALIDATE_AUTHENTICATION_INPUT_ARG, *PSAM_VALIDATE_AUTHENTICATION_INPUT_ARG;
780 typedef struct _SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG
782 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
783 RPC_UNICODE_STRING ClearPassword;
784 RPC_UNICODE_STRING UserAccountName;
785 SAM_VALIDATE_PASSWORD_HASH HashedPassword;
786 unsigned char PasswordMatch;
787 } SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG, *PSAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
789 typedef struct _SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG
791 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
792 RPC_UNICODE_STRING ClearPassword;
793 RPC_UNICODE_STRING UserAccountName;
794 SAM_VALIDATE_PASSWORD_HASH HashedPassword;
795 unsigned char PasswordMustChangeAtNextLogon;
796 unsigned char ClearLockout;
797 } SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG, *PSAM_VALIDATE_PASSWORD_RESET_INPUT_ARG;
799 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_INPUT_ARG
801 [case(SamValidateAuthentication)] SAM_VALIDATE_AUTHENTICATION_INPUT_ARG ValidateAuthenticationInput;
802 [case(SamValidatePasswordChange)] SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG ValidatePasswordChangeInput;
803 [case(SamValidatePasswordReset)] SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG ValidatePasswordResetInput;
804 } SAM_VALIDATE_INPUT_ARG, *PSAM_VALIDATE_INPUT_ARG;
806 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_OUTPUT_ARG
808 [case(SamValidateAuthentication)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidateAuthenticationOutput;
809 [case(SamValidatePasswordChange)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidatePasswordChangeOutput;
810 [case(SamValidatePasswordReset)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidatePasswordResetOutput;
811 } SAM_VALIDATE_OUTPUT_ARG, *PSAM_VALIDATE_OUTPUT_ARG;
814 uuid(12345778-1234-ABCD-EF00-0123456789AC),
816 pointer_default(unique),
817 endpoint("ncacn_np:[\\pipe\\samr]")
828 [in, unique] PSAMPR_SERVER_NAME ServerName,
829 [out] SAMPR_HANDLE *ServerHandle,
830 [in] ACCESS_MASK DesiredAccess);
836 [in,out] SAMPR_HANDLE *SamHandle);
841 SamrSetSecurityObject(
842 [in] SAMPR_HANDLE ObjectHandle,
843 [in] SECURITY_INFORMATION SecurityInformation,
844 [in] PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor);
849 SamrQuerySecurityObject(
850 [in] SAMPR_HANDLE ObjectHandle,
851 [in] SECURITY_INFORMATION SecurityInformation,
852 [out] PSAMPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor);
857 SamrShutdownSamServer(
858 [in] SAMPR_HANDLE ServerHandle);
863 SamrLookupDomainInSamServer(
864 [in] SAMPR_HANDLE ServerHandle,
865 [in] PRPC_UNICODE_STRING Name,
866 [out] PRPC_SID *DomainId);
871 SamrEnumerateDomainsInSamServer(
872 [in] SAMPR_HANDLE ServerHandle,
873 [in,out] unsigned long *EnumerationContext,
874 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
875 [in] unsigned long PreferedMaximumLength,
876 [out] unsigned long *CountReturned);
882 [in] SAMPR_HANDLE ServerHandle,
883 [in] ACCESS_MASK DesiredAccess,
884 [in] PRPC_SID DomainId,
885 [out] SAMPR_HANDLE *DomainHandle);
890 SamrQueryInformationDomain(
891 [in] SAMPR_HANDLE DomainHandle,
892 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
893 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
898 SamrSetInformationDomain(
899 [in] SAMPR_HANDLE DomainHandle,
900 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
901 [in, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER DomainInformation);
906 SamrCreateGroupInDomain(
907 [in] SAMPR_HANDLE DomainHandle,
908 [in] PRPC_UNICODE_STRING Name,
909 [in] ACCESS_MASK DesiredAccess,
910 [out] SAMPR_HANDLE *GroupHandle,
911 [out] unsigned long *RelativeId);
916 SamrEnumerateGroupsInDomain(
917 [in] SAMPR_HANDLE DomainHandle,
918 [in,out] unsigned long *EnumerationContext,
919 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
920 [in] unsigned long PreferedMaximumLength,
921 [out] unsigned long *CountReturned);
926 SamrCreateUserInDomain([in] SAMPR_HANDLE DomainHandle,
927 [in] PRPC_UNICODE_STRING Name,
928 [in] ACCESS_MASK DesiredAccess,
929 [out] SAMPR_HANDLE *UserHandle,
930 [out] unsigned long *RelativeId);
935 SamrEnumerateUsersInDomain([in] SAMPR_HANDLE DomainHandle,
936 [in,out] unsigned long *EnumerationContext,
937 [in] unsigned long UserAccountControl,
938 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
939 [in] unsigned long PreferedMaximumLength,
940 [out] unsigned long *CountReturned);
945 SamrCreateAliasInDomain([in] SAMPR_HANDLE DomainHandle,
946 [in] PRPC_UNICODE_STRING AccountName,
947 [in] ACCESS_MASK DesiredAccess,
948 [out] SAMPR_HANDLE *AliasHandle,
949 [out] unsigned long *RelativeId);
954 SamrEnumerateAliasesInDomain([in] SAMPR_HANDLE DomainHandle,
955 [in,out] unsigned long *EnumerationContext,
956 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
957 [in] unsigned long PreferedMaximumLength,
958 [out] unsigned long *CountReturned);
963 SamrGetAliasMembership([in] SAMPR_HANDLE DomainHandle,
964 [in] PSAMPR_PSID_ARRAY SidArray,
965 [out] PSAMPR_ULONG_ARRAY Membership);
970 SamrLookupNamesInDomain([in] SAMPR_HANDLE DomainHandle,
971 [in, range(0, 1000)] unsigned long Count,
972 [in, size_is(1000), length_is(Count)] RPC_UNICODE_STRING Names[*],
973 [out] PSAMPR_ULONG_ARRAY RelativeIds,
974 [out] PSAMPR_ULONG_ARRAY Use);
979 SamrLookupIdsInDomain(
980 [in] SAMPR_HANDLE DomainHandle,
981 [in, range(0, 1000)] unsigned long Count,
982 [in, size_is(1000), length_is(Count)] unsigned long *RelativeIds,
983 [out] PSAMPR_RETURNED_USTRING_ARRAY Names,
984 [out] PSAMPR_ULONG_ARRAY Use);
990 [in] SAMPR_HANDLE DomainHandle,
991 [in] ACCESS_MASK DesiredAccess,
992 [in] unsigned long GroupId,
993 [out] SAMPR_HANDLE *GroupHandle);
998 SamrQueryInformationGroup(
999 [in] SAMPR_HANDLE GroupHandle,
1000 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1001 [out, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER *Buffer);
1006 SamrSetInformationGroup(
1007 [in] SAMPR_HANDLE GroupHandle,
1008 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1009 [in, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER Buffer);
1014 SamrAddMemberToGroup(
1015 [in] SAMPR_HANDLE GroupHandle,
1016 [in] unsigned long MemberId,
1017 [in] unsigned long Attributes);
1023 [in,out] SAMPR_HANDLE *GroupHandle);
1028 SamrRemoveMemberFromGroup(
1029 [in] SAMPR_HANDLE GroupHandle,
1030 [in] unsigned long MemberId);
1035 SamrGetMembersInGroup(
1036 [in] SAMPR_HANDLE GroupHandle,
1037 [out] PSAMPR_GET_MEMBERS_BUFFER *Members);
1042 SamrSetMemberAttributesOfGroup(
1043 [in] SAMPR_HANDLE GroupHandle,
1044 [in] unsigned long MemberId,
1045 [in] unsigned long Attributes);
1051 [in] SAMPR_HANDLE DomainHandle,
1052 [in] ACCESS_MASK DesiredAccess,
1054 [out] SAMPR_HANDLE *AliasHandle);
1059 SamrQueryInformationAlias(
1060 [in] SAMPR_HANDLE AliasHandle,
1061 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1062 [out, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER *Buffer);
1067 SamrSetInformationAlias(
1068 [in] SAMPR_HANDLE AliasHandle,
1069 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1070 [in, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER Buffer);
1076 [in, out] SAMPR_HANDLE *AliasHandle);
1081 SamrAddMemberToAlias(
1082 [in] SAMPR_HANDLE AliasHandle,
1083 [in] PRPC_SID MemberId);
1088 SamrRemoveMemberFromAlias(
1089 [in] SAMPR_HANDLE AliasHandle,
1090 [in] PRPC_SID MemberId);
1095 SamrGetMembersInAlias(
1096 [in] SAMPR_HANDLE AliasHandle,
1097 [out] PSAMPR_PSID_ARRAY_OUT Members);
1103 [in] SAMPR_HANDLE DomainHandle,
1104 [in] ACCESS_MASK DesiredAccess,
1106 [out] SAMPR_HANDLE *UserHandle);
1112 [in,out] SAMPR_HANDLE *UserHandle);
1117 SamrQueryInformationUser(
1118 [in] SAMPR_HANDLE UserHandle,
1119 [in] USER_INFORMATION_CLASS UserInformationClass,
1120 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
1125 SamrSetInformationUser(
1126 [in] SAMPR_HANDLE UserHandle,
1127 [in] USER_INFORMATION_CLASS UserInformationClass,
1128 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
1133 SamrChangePasswordUser(
1134 [in] SAMPR_HANDLE UserHandle,
1135 [in] unsigned char LmPresent,
1136 [in, unique] PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm,
1137 [in, unique] PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm,
1138 [in] unsigned char NtPresent,
1139 [in, unique] PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt,
1140 [in, unique] PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt,
1141 [in] unsigned char NtCrossEncryptionPresent,
1142 [in, unique] PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm,
1143 [in] unsigned char LmCrossEncryptionPresent,
1144 [in, unique] PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt);
1149 SamrGetGroupsForUser(
1150 [in] SAMPR_HANDLE UserHandle,
1151 [out] PSAMPR_GET_GROUPS_BUFFER *Groups);
1156 SamrQueryDisplayInformation(
1157 [in] SAMPR_HANDLE DomainHandle,
1158 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1159 [in] unsigned long Index,
1160 [in] unsigned long EntryCount,
1161 [in] unsigned long PreferredMaximumLength,
1162 [out] unsigned long * TotalAvailable,
1163 [out] unsigned long * TotalReturned,
1164 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1169 SamrGetDisplayEnumerationIndex(
1170 [in] SAMPR_HANDLE DomainHandle,
1171 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1172 [in] PRPC_UNICODE_STRING Prefix,
1173 [out] unsigned long *Index);
1178 SamrTestPrivateFunctionsDomain(
1179 [in] SAMPR_HANDLE DomainHandle);
1184 SamrTestPrivateFunctionsUser(
1185 [in] SAMPR_HANDLE UserHandle);
1190 SamrGetUserDomainPasswordInformation(
1191 [in] SAMPR_HANDLE UserHandle,
1192 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1197 SamrRemoveMemberFromForeignDomain(
1198 [in] SAMPR_HANDLE DomainHandle,
1199 [in] PRPC_SID MemberSid);
1204 SamrQueryInformationDomain2(
1205 [in] SAMPR_HANDLE DomainHandle,
1206 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
1207 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
1212 SamrQueryInformationUser2(
1213 [in] SAMPR_HANDLE UserHandle,
1214 [in] USER_INFORMATION_CLASS UserInformationClass,
1215 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
1220 SamrQueryDisplayInformation2(
1221 [in] SAMPR_HANDLE DomainHandle,
1222 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1223 [in] unsigned long Index,
1224 [in] unsigned long EntryCount,
1225 [in] unsigned long PreferredMaximumLength,
1226 [out] unsigned long *TotalAvailable,
1227 [out] unsigned long *TotalReturned,
1228 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1233 SamrGetDisplayEnumerationIndex2(
1234 [in] SAMPR_HANDLE DomainHandle,
1235 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1236 [in] PRPC_UNICODE_STRING Prefix,
1237 [out] unsigned long *Index);
1242 SamrCreateUser2InDomain(
1243 [in] SAMPR_HANDLE DomainHandle,
1244 [in] PRPC_UNICODE_STRING Name,
1245 [in] unsigned long AccountType,
1246 [in] ACCESS_MASK DesiredAccess,
1247 [out] SAMPR_HANDLE *UserHandle,
1248 [out] unsigned long *GrantedAccess,
1249 [out] unsigned long *RelativeId);
1254 SamrQueryDisplayInformation3(
1255 [in] SAMPR_HANDLE DomainHandle,
1256 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1257 [in] unsigned long Index,
1258 [in] unsigned long EntryCount,
1259 [in] unsigned long PreferredMaximumLength,
1260 [out] unsigned long *TotalAvailable,
1261 [out] unsigned long *TotalReturned,
1262 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1267 SamrAddMultipleMembersToAlias(
1268 [in] SAMPR_HANDLE AliasHandle,
1269 [in] PSAMPR_PSID_ARRAY MembersBuffer);
1274 SamrRemoveMultipleMembersFromAlias(
1275 [in] SAMPR_HANDLE AliasHandle,
1276 [in] PSAMPR_PSID_ARRAY MembersBuffer);
1281 SamrOemChangePasswordUser2(
1282 [in] handle_t BindingHandle,
1283 [in,unique] PRPC_STRING ServerName,
1284 [in] PRPC_STRING UserName,
1285 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
1286 [in,unique] PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewLm);
1291 SamrUnicodeChangePasswordUser2(
1292 [in] handle_t BindingHandle,
1293 [in,unique] PRPC_UNICODE_STRING ServerName,
1294 [in] PRPC_UNICODE_STRING UserName,
1295 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldNt,
1296 [in,unique] PENCRYPTED_NT_OWF_PASSWORD OldNtOwfPasswordEncryptedWithNewNt,
1297 [in] unsigned char LmPresent,
1298 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
1299 [in,unique] PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewNt);
1304 SamrGetDomainPasswordInformation(
1305 [in] handle_t BindingHandle,
1306 [in,unique] PRPC_UNICODE_STRING Unused,
1307 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1313 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1314 [out] SAMPR_HANDLE *ServerHandle,
1315 [in] ACCESS_MASK DesiredAccess);
1320 SamrSetInformationUser2(
1321 [in] SAMPR_HANDLE UserHandle,
1322 [in] USER_INFORMATION_CLASS UserInformationClass,
1323 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
1328 SamrSetBootKeyInformation(
1329 [in] handle_t BindingHandle); /* FIXME */
1334 SamrGetBootKeyInformation(
1335 [in] handle_t BindingHandle); /* FIXME */
1341 [in] handle_t BindingHandle); /* FIXME */
1347 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1348 [out] SAMPR_HANDLE *ServerHandle,
1349 [in] unsigned long ClientRevision,
1350 [in] ACCESS_MASK DesiredAccess);
1355 SamrUnicodeChangePasswordUser3(
1356 [in] handle_t BindingHandle); /* FIXME */
1362 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1363 [in] ACCESS_MASK DesiredAccess,
1364 [in] unsigned long InVersion,
1365 [in,switch_is(InVersion)] SAMPR_REVISION_INFO *InRevisionInfo,
1366 [out] unsigned long *OutVersion,
1367 [out,switch_is(*OutVersion)] SAMPR_REVISION_INFO *OutRevisionInfo,
1368 [out] SAMPR_HANDLE *ServerHandle);
1374 [in] SAMPR_HANDLE ObjectHandle,
1375 [in] unsigned long Rid,
1376 [out] PRPC_SID *Sid);
1381 SamrSetDSRMPassword(
1382 [in] handle_t BindingHandle,
1383 [in,unique] PRPC_UNICODE_STRING Unused,
1384 [in] unsigned long UserId,
1385 [in,unique] PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword);
1390 SamrValidatePassword(
1391 [in] handle_t Handle,
1392 [in] PASSWORD_POLICY_VALIDATION_TYPE ValidationType,
1393 [in,switch_is(ValidationType)] PSAM_VALIDATE_INPUT_ARG InputArg,
1394 [out,switch_is(ValidationType)] PSAM_VALIDATE_OUTPUT_ARG *OutputArg);