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 } SAMPR_LOGON_HOURS, *PSAMPR_LOGON_HOURS;
475 typedef struct _SAMPR_USER_ALL_INFORMATION
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;
512 typedef struct _SAMPR_USER_GENERAL_INFORMATION
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;
521 typedef struct _SAMPR_USER_PREFERENCES_INFORMATION
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;
529 typedef struct _SAMPR_USER_PARAMETERS_INFORMATION
531 RPC_UNICODE_STRING Parameters;
532 } SAMPR_USER_PARAMETERS_INFORMATION, *PSAMPR_USER_PARAMETERS_INFORMATION;
534 typedef struct _SAMPR_USER_LOGON_INFORMATION
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;
556 typedef struct _SAMPR_USER_ACCOUNT_INFORMATION
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;
578 typedef struct _SAMPR_USER_A_NAME_INFORMATION
580 RPC_UNICODE_STRING UserName;
581 } SAMPR_USER_A_NAME_INFORMATION, *PSAMPR_USER_A_NAME_INFORMATION;
583 typedef struct _SAMPR_USER_F_NAME_INFORMATION
585 RPC_UNICODE_STRING FullName;
586 } SAMPR_USER_F_NAME_INFORMATION, *PSAMPR_USER_F_NAME_INFORMATION;
588 typedef struct _SAMPR_USER_NAME_INFORMATION
590 RPC_UNICODE_STRING UserName;
591 RPC_UNICODE_STRING FullName;
592 } SAMPR_USER_NAME_INFORMATION, *PSAMPR_USER_NAME_INFORMATION;
594 typedef struct _SAMPR_USER_HOME_INFORMATION
596 RPC_UNICODE_STRING HomeDirectory;
597 RPC_UNICODE_STRING HomeDirectoryDrive;
598 } SAMPR_USER_HOME_INFORMATION, *PSAMPR_USER_HOME_INFORMATION;
600 typedef struct _SAMPR_USER_SCRIPT_INFORMATION
602 RPC_UNICODE_STRING ScriptPath;
603 } SAMPR_USER_SCRIPT_INFORMATION, *PSAMPR_USER_SCRIPT_INFORMATION;
605 typedef struct _SAMPR_USER_PROFILE_INFORMATION
607 RPC_UNICODE_STRING ProfilePath;
608 } SAMPR_USER_PROFILE_INFORMATION, *PSAMPR_USER_PROFILE_INFORMATION;
610 typedef struct _SAMPR_USER_ADMIN_COMMENT_INFORMATION
612 RPC_UNICODE_STRING AdminComment;
613 } SAMPR_USER_ADMIN_COMMENT_INFORMATION, *PSAMPR_USER_ADMIN_COMMENT_INFORMATION;
615 typedef struct _SAMPR_USER_WORKSTATIONS_INFORMATION
617 RPC_UNICODE_STRING WorkStations;
618 } SAMPR_USER_WORKSTATIONS_INFORMATION, *PSAMPR_USER_WORKSTATIONS_INFORMATION;
620 typedef struct _SAMPR_USER_SET_PASSWORD_INFORMATION
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;
627 typedef struct _SAMPR_USER_LOGON_HOURS_INFORMATION
629 SAMPR_LOGON_HOURS LogonHours;
630 } SAMPR_USER_LOGON_HOURS_INFORMATION, *PSAMPR_USER_LOGON_HOURS_INFORMATION;
632 typedef struct _SAMPR_USER_INTERNAL1_INFORMATION
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;
641 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION
643 SAMPR_USER_ALL_INFORMATION I1;
644 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
645 } SAMPR_USER_INTERNAL4_INFORMATION, *PSAMPR_USER_INTERNAL4_INFORMATION;
647 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION_NEW
649 SAMPR_USER_ALL_INFORMATION I1;
650 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
651 } SAMPR_USER_INTERNAL4_INFORMATION_NEW, *PSAMPR_USER_INTERNAL4_INFORMATION_NEW;
653 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION
655 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
656 BOOLEAN PasswordExpired;
657 } SAMPR_USER_INTERNAL5_INFORMATION, *PSAMPR_USER_INTERNAL5_INFORMATION;
659 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION_NEW
661 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
662 BOOLEAN PasswordExpired;
663 } SAMPR_USER_INTERNAL5_INFORMATION_NEW, *PSAMPR_USER_INTERNAL5_INFORMATION_NEW;
665 cpp_quote("#ifndef _NTSAM_")
666 typedef enum _USER_INFORMATION_CLASS
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;
700 typedef [switch_type(USER_INFORMATION_CLASS)] union _SAMPR_USER_INFO_BUFFER
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;
728 typedef enum _PASSWORD_POLICY_VALIDATION_TYPE
730 SamValidateAuthentication = 1,
731 SamValidatePasswordChange,
732 SamValidatePasswordReset
733 } PASSWORD_POLICY_VALIDATION_TYPE;
735 typedef struct _SAM_VALIDATE_PASSWORD_HASH
737 unsigned long Length;
738 [unique,size_is(Length)] unsigned char* Hash;
739 } SAM_VALIDATE_PASSWORD_HASH, *PSAM_VALIDATE_PASSWORD_HASH;
741 typedef struct _SAM_VALIDATE_PERSISTED_FIELDS
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;
752 typedef enum _SAM_VALIDATE_VALIDATION_STATUS
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;
767 typedef struct _SAM_VALIDATE_STANDARD_OUTPUT_ARG
769 SAM_VALIDATE_PERSISTED_FIELDS ChangedPersistedFields;
770 SAM_VALIDATE_VALIDATION_STATUS ValidationStatus;
771 } SAM_VALIDATE_STANDARD_OUTPUT_ARG, *PSAM_VALIDATE_STANDARD_OUTPUT_ARG;
773 typedef struct _SAM_VALIDATE_AUTHENTICATION_INPUT_ARG
775 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
776 unsigned char PasswordMatched;
777 } SAM_VALIDATE_AUTHENTICATION_INPUT_ARG, *PSAM_VALIDATE_AUTHENTICATION_INPUT_ARG;
779 typedef struct _SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG
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;
788 typedef struct _SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG
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;
798 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_INPUT_ARG
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;
805 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_OUTPUT_ARG
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;
813 uuid(12345778-1234-ABCD-EF00-0123456789AC),
815 pointer_default(unique),
816 endpoint("ncacn_np:[\\pipe\\samr]")
827 [in, unique] PSAMPR_SERVER_NAME ServerName,
828 [out] SAMPR_HANDLE *ServerHandle,
829 [in] ACCESS_MASK DesiredAccess);
835 [in,out] SAMPR_HANDLE *SamHandle);
840 SamrSetSecurityObject(
841 [in] SAMPR_HANDLE ObjectHandle,
842 [in] SECURITY_INFORMATION SecurityInformation,
843 [in] PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor);
848 SamrQuerySecurityObject(
849 [in] SAMPR_HANDLE ObjectHandle,
850 [in] SECURITY_INFORMATION SecurityInformation,
851 [out] PSAMPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor);
856 SamrShutdownSamServer(
857 [in] SAMPR_HANDLE ServerHandle);
862 SamrLookupDomainInSamServer(
863 [in] SAMPR_HANDLE ServerHandle,
864 [in] PRPC_UNICODE_STRING Name,
865 [out] PRPC_SID *DomainId);
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);
881 [in] SAMPR_HANDLE ServerHandle,
882 [in] ACCESS_MASK DesiredAccess,
883 [in] PRPC_SID DomainId,
884 [out] SAMPR_HANDLE *DomainHandle);
889 SamrQueryInformationDomain(
890 [in] SAMPR_HANDLE DomainHandle,
891 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
892 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
897 SamrSetInformationDomain(
898 [in] SAMPR_HANDLE DomainHandle,
899 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
900 [in, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER DomainInformation);
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);
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);
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);
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);
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);
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);
962 SamrGetAliasMembership([in] SAMPR_HANDLE DomainHandle,
963 [in] PSAMPR_PSID_ARRAY SidArray,
964 [out] PSAMPR_ULONG_ARRAY Membership);
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);
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);
989 [in] SAMPR_HANDLE DomainHandle,
990 [in] ACCESS_MASK DesiredAccess,
991 [in] unsigned long GroupId,
992 [out] SAMPR_HANDLE *GroupHandle);
997 SamrQueryInformationGroup(
998 [in] SAMPR_HANDLE GroupHandle,
999 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1000 [out, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER *Buffer);
1005 SamrSetInformationGroup(
1006 [in] SAMPR_HANDLE GroupHandle,
1007 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1008 [in, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER Buffer);
1013 SamrAddMemberToGroup(
1014 [in] SAMPR_HANDLE GroupHandle,
1015 [in] unsigned long MemberId,
1016 [in] unsigned long Attributes);
1022 [in,out] SAMPR_HANDLE *GroupHandle);
1027 SamrRemoveMemberFromGroup(
1028 [in] SAMPR_HANDLE GroupHandle,
1029 [in] unsigned long MemberId);
1034 SamrGetMembersInGroup(
1035 [in] SAMPR_HANDLE GroupHandle,
1036 [out] PSAMPR_GET_MEMBERS_BUFFER *Members);
1041 SamrSetMemberAttributesOfGroup(
1042 [in] SAMPR_HANDLE GroupHandle,
1043 [in] unsigned long MemberId,
1044 [in] unsigned long Attributes);
1050 [in] SAMPR_HANDLE DomainHandle,
1051 [in] ACCESS_MASK DesiredAccess,
1053 [out] SAMPR_HANDLE *AliasHandle);
1058 SamrQueryInformationAlias(
1059 [in] SAMPR_HANDLE AliasHandle,
1060 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1061 [out, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER *Buffer);
1066 SamrSetInformationAlias(
1067 [in] SAMPR_HANDLE AliasHandle,
1068 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1069 [in, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER Buffer);
1075 [in, out] SAMPR_HANDLE *AliasHandle);
1080 SamrAddMemberToAlias(
1081 [in] SAMPR_HANDLE AliasHandle,
1082 [in] PRPC_SID MemberId);
1087 SamrRemoveMemberFromAlias(
1088 [in] SAMPR_HANDLE AliasHandle,
1089 [in] PRPC_SID MemberId);
1094 SamrGetMembersInAlias(
1095 [in] SAMPR_HANDLE AliasHandle,
1096 [out] PSAMPR_PSID_ARRAY_OUT Members);
1102 [in] SAMPR_HANDLE DomainHandle,
1103 [in] ACCESS_MASK DesiredAccess,
1105 [out] SAMPR_HANDLE *UserHandle);
1111 [in,out] SAMPR_HANDLE *UserHandle);
1116 SamrQueryInformationUser(
1117 [in] SAMPR_HANDLE UserHandle,
1118 [in] USER_INFORMATION_CLASS UserInformationClass,
1119 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
1124 SamrSetInformationUser(
1125 [in] SAMPR_HANDLE UserHandle,
1126 [in] USER_INFORMATION_CLASS UserInformationClass,
1127 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
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);
1148 SamrGetGroupsForUser(
1149 [in] SAMPR_HANDLE UserHandle,
1150 [out] PSAMPR_GET_GROUPS_BUFFER *Groups);
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);
1168 SamrGetDisplayEnumerationIndex(
1169 [in] SAMPR_HANDLE DomainHandle,
1170 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1171 [in] PRPC_UNICODE_STRING Prefix,
1172 [out] unsigned long *Index);
1177 SamrTestPrivateFunctionsDomain(
1178 [in] SAMPR_HANDLE DomainHandle);
1183 SamrTestPrivateFunctionsUser(
1184 [in] SAMPR_HANDLE UserHandle);
1189 SamrGetUserDomainPasswordInformation(
1190 [in] SAMPR_HANDLE UserHandle,
1191 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1196 SamrRemoveMemberFromForeignDomain(
1197 [in] SAMPR_HANDLE DomainHandle,
1198 [in] PRPC_SID MemberSid);
1203 SamrQueryInformationDomain2(
1204 [in] SAMPR_HANDLE DomainHandle,
1205 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
1206 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
1211 SamrQueryInformationUser2(
1212 [in] SAMPR_HANDLE UserHandle,
1213 [in] USER_INFORMATION_CLASS UserInformationClass,
1214 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
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);
1232 SamrGetDisplayEnumerationIndex2(
1233 [in] SAMPR_HANDLE DomainHandle,
1234 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1235 [in] PRPC_UNICODE_STRING Prefix,
1236 [out] unsigned long *Index);
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);
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);
1266 SamrAddMultipleMembersToAlias(
1267 [in] SAMPR_HANDLE AliasHandle,
1268 [in] PSAMPR_PSID_ARRAY MembersBuffer);
1273 SamrRemoveMultipleMembersFromAlias(
1274 [in] SAMPR_HANDLE AliasHandle,
1275 [in] PSAMPR_PSID_ARRAY MembersBuffer);
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);
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);
1303 SamrGetDomainPasswordInformation(
1304 [in] handle_t BindingHandle,
1305 [in,unique] PRPC_UNICODE_STRING Unused,
1306 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1312 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1313 [out] SAMPR_HANDLE *ServerHandle,
1314 [in] ACCESS_MASK DesiredAccess);
1319 SamrSetInformationUser2(
1320 [in] SAMPR_HANDLE UserHandle,
1321 [in] USER_INFORMATION_CLASS UserInformationClass,
1322 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
1327 SamrSetBootKeyInformation(
1328 [in] handle_t BindingHandle); /* FIXME */
1333 SamrGetBootKeyInformation(
1334 [in] handle_t BindingHandle); /* FIXME */
1340 [in] handle_t BindingHandle); /* FIXME */
1346 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1347 [out] SAMPR_HANDLE *ServerHandle,
1348 [in] unsigned long ClientRevision,
1349 [in] ACCESS_MASK DesiredAccess);
1354 SamrUnicodeChangePasswordUser3(
1355 [in] handle_t BindingHandle); /* FIXME */
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);
1373 [in] SAMPR_HANDLE ObjectHandle,
1374 [in] unsigned long Rid,
1375 [out] PRPC_SID *Sid);
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);
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);