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 } LM_OWF_PASSWORD, *PLM_OWF_PASSWORD,
32 NT_OWF_PASSWORD, *PNT_OWF_PASSWORD,
33 ENCRYPTED_LM_OWF_PASSWORD, *PENCRYPTED_LM_OWF_PASSWORD,
34 ENCRYPTED_NT_OWF_PASSWORD, *PENCRYPTED_NT_OWF_PASSWORD;
36 typedef struct _SAMPR_ULONG_ARRAY
39 [size_is(Count)] unsigned long *Element;
40 } SAMPR_ULONG_ARRAY, *PSAMPR_ULONG_ARRAY;
42 typedef struct _SAMPR_SID_INFORMATION
45 } SAMPR_SID_INFORMATION, *PSAMPR_SID_INFORMATION;
47 typedef struct _SAMPR_PSID_ARRAY
49 [range(0, 1024)] unsigned long Count;
50 [size_is(Count)] PSAMPR_SID_INFORMATION Sids;
51 } SAMPR_PSID_ARRAY, *PSAMPR_PSID_ARRAY;
53 typedef struct _SAMPR_PSID_ARRAY_OUT
56 [size_is(Count)] PSAMPR_SID_INFORMATION Sids;
57 } SAMPR_PSID_ARRAY_OUT, *PSAMPR_PSID_ARRAY_OUT;
59 typedef struct _SAMPR_RETURNED_USTRING_ARRAY
62 [size_is(Count)] PRPC_UNICODE_STRING Element;
63 } SAMPR_RETURNED_USTRING_ARRAY, *PSAMPR_RETURNED_USTRING_ARRAY;
65 cpp_quote("#ifndef _WINNT_")
66 typedef enum _SID_NAME_USE
72 SidTypeWellKnownGroup,
73 SidTypeDeletedAccount,
76 } SID_NAME_USE, *PSID_NAME_USE;
79 typedef struct RPC_SHORT_BLOB
81 unsigned short Length;
82 unsigned short MaximumLength;
83 [size_is(MaximumLength/2), length_is(Length/2)]
84 unsigned short* Buffer;
85 } RPC_SHORT_BLOB, *PRPC_SHORT_BLOB;
87 typedef struct _SAMPR_RID_ENUMERATION
89 unsigned long RelativeId;
90 RPC_UNICODE_STRING Name;
91 } SAMPR_RID_ENUMERATION, *PSAMPR_RID_ENUMERATION;
93 typedef struct _SAMPR_ENUMERATION_BUFFER
95 unsigned long EntriesRead;
96 [size_is(EntriesRead)] PSAMPR_RID_ENUMERATION Buffer;
97 } SAMPR_ENUMERATION_BUFFER, *PSAMPR_ENUMERATION_BUFFER;
99 typedef struct _SAMPR_SR_SECURITY_DESCRIPTOR
101 [range(0, 256 * 1024)] unsigned long Length;
102 [size_is(Length)] unsigned char* SecurityDescriptor;
103 } SAMPR_SR_SECURITY_DESCRIPTOR, *PSAMPR_SR_SECURITY_DESCRIPTOR;
105 cpp_quote("#ifndef _NTSAM_")
106 typedef struct _GROUP_MEMBERSHIP
108 unsigned long RelativeId;
109 unsigned long Attributes;
110 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
113 typedef struct _SAMPR_GET_GROUPS_BUFFER
115 unsigned long MembershipCount;
116 [size_is(MembershipCount)] PGROUP_MEMBERSHIP Groups;
117 } SAMPR_GET_GROUPS_BUFFER, *PSAMPR_GET_GROUPS_BUFFER;
119 typedef struct _SAMPR_GET_MEMBERS_BUFFER
121 unsigned long MemberCount;
122 [size_is(MemberCount)] unsigned long* Members;
123 [size_is(MemberCount)] unsigned long* Attributes;
124 } SAMPR_GET_MEMBERS_BUFFER, *PSAMPR_GET_MEMBERS_BUFFER;
126 typedef struct _SAMPR_REVISION_INFO_V1
128 unsigned long Revision;
129 unsigned long SupportedFeatures;
130 } SAMPR_REVISION_INFO_V1, *PSAMPR_REVISION_INFO_V1;
132 typedef [switch_type(unsigned long)] union
134 [case(1)] SAMPR_REVISION_INFO_V1 V1;
135 }SAMPR_REVISION_INFO, *PSAMPR_REVISION_INFO;
137 typedef struct _USER_DOMAIN_PASSWORD_INFORMATION
139 unsigned short MinPasswordLength;
140 unsigned long PasswordProperties;
141 } USER_DOMAIN_PASSWORD_INFORMATION, *PUSER_DOMAIN_PASSWORD_INFORMATION;
143 cpp_quote("#ifndef _NTSAM_")
144 typedef enum _DOMAIN_SERVER_ENABLE_STATE
146 DomainServerEnabled = 1,
148 } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
150 typedef struct _DOMAIN_STATE_INFORMATION
152 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
153 } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
156 cpp_quote("#ifndef _NTSAM_")
157 typedef enum _DOMAIN_SERVER_ROLE
159 DomainServerRoleBackup = 2,
160 DomainServerRolePrimary = 3
161 } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
164 cpp_quote("#if !defined(_NTSECAPI_H) && !defined(_NTSAM_)")
165 typedef struct _DOMAIN_PASSWORD_INFORMATION
167 USHORT MinPasswordLength;
168 USHORT PasswordHistoryLength;
169 ULONG PasswordProperties;
170 OLD_LARGE_INTEGER MaxPasswordAge;
171 OLD_LARGE_INTEGER MinPasswordAge;
172 } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
175 cpp_quote("#ifndef _NTSAM_")
176 typedef struct _DOMAIN_LOGOFF_INFORMATION
178 OLD_LARGE_INTEGER ForceLogoff;
179 } DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
181 typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
183 DOMAIN_SERVER_ROLE DomainServerRole;
184 } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
186 typedef struct _DOMAIN_MODIFIED_INFORMATION
188 OLD_LARGE_INTEGER DomainModifiedCount;
189 OLD_LARGE_INTEGER CreationTime;
190 } DOMAIN_MODIFIED_INFORMATION, *PDOMAIN_MODIFIED_INFORMATION;
192 typedef struct _DOMAIN_MODIFIED_INFORMATION2
194 OLD_LARGE_INTEGER DomainModifiedCount;
195 OLD_LARGE_INTEGER CreationTime;
196 OLD_LARGE_INTEGER ModifiedCountAtLastPromotion;
197 } DOMAIN_MODIFIED_INFORMATION2, *PDOMAIN_MODIFIED_INFORMATION2;
200 cpp_quote("#include <pshpack4.h>")
201 typedef struct _SAMPR_DOMAIN_GENERAL_INFORMATION
203 OLD_LARGE_INTEGER ForceLogoff;
204 RPC_UNICODE_STRING OemInformation;
205 RPC_UNICODE_STRING DomainName;
206 RPC_UNICODE_STRING ReplicaSourceNodeName;
207 OLD_LARGE_INTEGER DomainModifiedCount;
208 unsigned long DomainServerState;
209 unsigned long DomainServerRole;
210 unsigned char UasCompatibilityRequired;
211 unsigned long UserCount;
212 unsigned long GroupCount;
213 unsigned long AliasCount;
214 } SAMPR_DOMAIN_GENERAL_INFORMATION, *PSAMPR_DOMAIN_GENERAL_INFORMATION;
216 typedef struct _SAMPR_DOMAIN_GENERAL_INFORMATION2
218 SAMPR_DOMAIN_GENERAL_INFORMATION I1;
219 LARGE_INTEGER LockoutDuration;
220 LARGE_INTEGER LockoutObservationWindow;
221 unsigned short LockoutThreshold;
222 } SAMPR_DOMAIN_GENERAL_INFORMATION2, *PSAMPR_DOMAIN_GENERAL_INFORMATION2;
223 cpp_quote("#include <poppack.h>")
225 typedef struct _SAMPR_DOMAIN_OEM_INFORMATION
227 RPC_UNICODE_STRING OemInformation;
228 } SAMPR_DOMAIN_OEM_INFORMATION, *PSAMPR_DOMAIN_OEM_INFORMATION;
230 typedef struct _SAMPR_DOMAIN_NAME_INFORMATION
232 RPC_UNICODE_STRING DomainName;
233 } SAMPR_DOMAIN_NAME_INFORMATION, *PSAMPR_DOMAIN_NAME_INFORMATION;
235 typedef struct SAMPR_DOMAIN_REPLICATION_INFORMATION
237 RPC_UNICODE_STRING ReplicaSourceNodeName;
238 } SAMPR_DOMAIN_REPLICATION_INFORMATION, *PSAMPR_DOMAIN_REPLICATION_INFORMATION;
240 typedef struct _SAMPR_DOMAIN_LOCKOUT_INFORMATION
242 LARGE_INTEGER LockoutDuration;
243 LARGE_INTEGER LockoutObservationWindow;
244 unsigned short LockoutThreshold;
245 } SAMPR_DOMAIN_LOCKOUT_INFORMATION, *PSAMPR_DOMAIN_LOCKOUT_INFORMATION;
247 cpp_quote("#ifndef _NTSAM_")
248 typedef enum _DOMAIN_INFORMATION_CLASS
250 DomainPasswordInformation = 1,
251 DomainGeneralInformation = 2,
252 DomainLogoffInformation = 3,
253 DomainOemInformation = 4,
254 DomainNameInformation = 5,
255 DomainReplicationInformation = 6,
256 DomainServerRoleInformation = 7,
257 DomainModifiedInformation = 8,
258 DomainStateInformation = 9,
259 DomainGeneralInformation2 = 11,
260 DomainLockoutInformation = 12,
261 DomainModifiedInformation2 = 13
262 } DOMAIN_INFORMATION_CLASS;
265 typedef [switch_type(DOMAIN_INFORMATION_CLASS)] union _SAMPR_DOMAIN_INFO_BUFFER
267 [case(DomainPasswordInformation)] DOMAIN_PASSWORD_INFORMATION Password;
268 [case(DomainGeneralInformation)] SAMPR_DOMAIN_GENERAL_INFORMATION General;
269 [case(DomainLogoffInformation)] DOMAIN_LOGOFF_INFORMATION Logoff;
270 [case(DomainOemInformation)] SAMPR_DOMAIN_OEM_INFORMATION Oem;
271 [case(DomainNameInformation)] SAMPR_DOMAIN_NAME_INFORMATION Name;
272 [case(DomainServerRoleInformation)] DOMAIN_SERVER_ROLE_INFORMATION Role;
273 [case(DomainReplicationInformation)] SAMPR_DOMAIN_REPLICATION_INFORMATION Replication;
274 [case(DomainModifiedInformation)] DOMAIN_MODIFIED_INFORMATION Modified;
275 [case(DomainStateInformation)] DOMAIN_STATE_INFORMATION State;
276 [case(DomainGeneralInformation2)] SAMPR_DOMAIN_GENERAL_INFORMATION2 General2;
277 [case(DomainLockoutInformation)] SAMPR_DOMAIN_LOCKOUT_INFORMATION Lockout;
278 [case(DomainModifiedInformation2)] DOMAIN_MODIFIED_INFORMATION2 Modified2;
279 } SAMPR_DOMAIN_INFO_BUFFER, *PSAMPR_DOMAIN_INFO_BUFFER;
281 cpp_quote("#ifndef _NTSAM_")
282 typedef enum _DOMAIN_DISPLAY_INFORMATION
284 DomainDisplayUser = 1,
285 DomainDisplayMachine,
287 DomainDisplayOemUser,
288 DomainDisplayOemGroup,
290 } DOMAIN_DISPLAY_INFORMATION, *PDOMAIN_DISPLAY_INFORMATION;
293 typedef struct _SAMPR_DOMAIN_DISPLAY_USER
297 unsigned long AccountControl;
298 RPC_UNICODE_STRING AccountName;
299 RPC_UNICODE_STRING AdminComment;
300 RPC_UNICODE_STRING FullName;
301 } SAMPR_DOMAIN_DISPLAY_USER, *PSAMPR_DOMAIN_DISPLAY_USER;
303 typedef struct _SAMPR_DOMAIN_DISPLAY_MACHINE
307 unsigned long AccountControl;
308 RPC_UNICODE_STRING AccountName;
309 RPC_UNICODE_STRING AdminComment;
310 } SAMPR_DOMAIN_DISPLAY_MACHINE, *PSAMPR_DOMAIN_DISPLAY_MACHINE;
312 typedef struct _SAMPR_DOMAIN_DISPLAY_GROUP
316 unsigned long Attributes;
317 RPC_UNICODE_STRING AccountName;
318 RPC_UNICODE_STRING AdminComment;
319 } SAMPR_DOMAIN_DISPLAY_GROUP, *PSAMPR_DOMAIN_DISPLAY_GROUP;
321 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_USER
324 RPC_STRING OemAccountName;
325 } SAMPR_DOMAIN_DISPLAY_OEM_USER, *PSAMPR_DOMAIN_DISPLAY_OEM_USER;
327 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_GROUP
330 RPC_STRING OemAccountName;
331 } SAMPR_DOMAIN_DISPLAY_OEM_GROUP, *PSAMPR_DOMAIN_DISPLAY_OEM_GROUP;
333 typedef struct _SAMPR_DOMAIN_DISPLAY_USER_BUFFER
335 unsigned long EntriesRead;
336 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_USER Buffer;
337 } SAMPR_DOMAIN_DISPLAY_USER_BUFFER, *PSAMPR_DOMAIN_DISPLAY_USER_BUFFER;
339 typedef struct _SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER
341 unsigned long EntriesRead;
342 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_MACHINE Buffer;
343 } SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER, *PSAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER;
345 typedef struct _SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER
347 unsigned long EntriesRead;
348 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_GROUP Buffer;
349 } SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER, *PSAMPR_DOMAIN_DISPLAY_GROUP_BUFFER;
351 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER
353 unsigned long EntriesRead;
354 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_OEM_USER Buffer;
355 } SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER, *PSAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER;
357 typedef struct _SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER
359 unsigned long EntriesRead;
360 [size_is(EntriesRead)] PSAMPR_DOMAIN_DISPLAY_OEM_GROUP Buffer;
361 } SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER, *PSAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER;
363 typedef [switch_type(DOMAIN_DISPLAY_INFORMATION)] union _SAMPR_DISPLAY_INFO_BUFFER
365 [case(DomainDisplayUser)] SAMPR_DOMAIN_DISPLAY_USER_BUFFER UserInformation;
366 [case(DomainDisplayMachine)] SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER MachineInformation;
367 [case(DomainDisplayGroup)] SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER GroupInformation;
368 [case(DomainDisplayOemUser)] SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER OemUserInformation;
369 [case(DomainDisplayOemGroup)] SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER OemGroupInformation;
370 } SAMPR_DISPLAY_INFO_BUFFER, *PSAMPR_DISPLAY_INFO_BUFFER;
372 typedef struct _SAMPR_GROUP_ATTRIBUTE_INFORMATION
374 unsigned long Attributes;
375 } SAMPR_GROUP_ATTRIBUTE_INFORMATION, *PSAMPR_GROUP_ATTRIBUTE_INFORMATION;
377 typedef struct _SAMPR_GROUP_GENERAL_INFORMATION
379 RPC_UNICODE_STRING Name;
380 unsigned long Attributes;
381 unsigned long MemberCount;
382 RPC_UNICODE_STRING AdminComment;
383 } SAMPR_GROUP_GENERAL_INFORMATION, *PSAMPR_GROUP_GENERAL_INFORMATION;
385 typedef struct _SAMPR_GROUP_NAME_INFORMATION
387 RPC_UNICODE_STRING Name;
388 } SAMPR_GROUP_NAME_INFORMATION, *PSAMPR_GROUP_NAME_INFORMATION;
390 typedef struct _SAMPR_GROUP_ADM_COMMENT_INFORMATION
392 RPC_UNICODE_STRING AdminComment;
393 } SAMPR_GROUP_ADM_COMMENT_INFORMATION, *PSAMPR_GROUP_ADM_COMMENT_INFORMATION;
395 cpp_quote("#ifndef _NTSAM_")
396 typedef enum _GROUP_INFORMATION_CLASS
398 GroupGeneralInformation = 1,
399 GroupNameInformation,
400 GroupAttributeInformation,
401 GroupAdminCommentInformation,
402 GroupReplicationInformation
403 } GROUP_INFORMATION_CLASS;
406 typedef [switch_type(GROUP_INFORMATION_CLASS)] union _SAMPR_GROUP_INFO_BUFFER
408 [case(GroupGeneralInformation)] SAMPR_GROUP_GENERAL_INFORMATION General;
409 [case(GroupNameInformation)] SAMPR_GROUP_NAME_INFORMATION Name;
410 [case(GroupAttributeInformation)] SAMPR_GROUP_ATTRIBUTE_INFORMATION Attribute;
411 [case(GroupAdminCommentInformation)] SAMPR_GROUP_ADM_COMMENT_INFORMATION AdminComment;
412 [case(GroupReplicationInformation)] SAMPR_GROUP_GENERAL_INFORMATION DoNotUse;
413 } SAMPR_GROUP_INFO_BUFFER, *PSAMPR_GROUP_INFO_BUFFER;
415 typedef struct _SAMPR_ALIAS_GENERAL_INFORMATION
417 RPC_UNICODE_STRING Name;
419 RPC_UNICODE_STRING AdminComment;
420 } SAMPR_ALIAS_GENERAL_INFORMATION, *PSAMPR_ALIAS_GENERAL_INFORMATION;
422 typedef struct _SAMPR_ALIAS_NAME_INFORMATION
424 RPC_UNICODE_STRING Name;
425 } SAMPR_ALIAS_NAME_INFORMATION, *PSAMPR_ALIAS_NAME_INFORMATION;
427 typedef struct _SAMPR_ALIAS_ADM_COMMENT_INFORMATION
429 RPC_UNICODE_STRING AdminComment;
430 } SAMPR_ALIAS_ADM_COMMENT_INFORMATION, *PSAMPR_ALIAS_ADM_COMMENT_INFORMATION;
432 cpp_quote("#ifndef _NTSAM_")
433 typedef enum _ALIAS_INFORMATION_CLASS
435 AliasGeneralInformation = 1,
436 AliasNameInformation,
437 AliasAdminCommentInformation,
438 } ALIAS_INFORMATION_CLASS;
441 typedef [switch_type(ALIAS_INFORMATION_CLASS)] union _SAMPR_ALIAS_INFO_BUFFER
443 [case(AliasGeneralInformation)] SAMPR_ALIAS_GENERAL_INFORMATION General;
444 [case(AliasNameInformation)] SAMPR_ALIAS_NAME_INFORMATION Name;
445 [case(AliasAdminCommentInformation)] SAMPR_ALIAS_ADM_COMMENT_INFORMATION AdminComment;
446 } SAMPR_ALIAS_INFO_BUFFER, *PSAMPR_ALIAS_INFO_BUFFER;
448 typedef struct _SAMPR_ENCRYPTED_USER_PASSWORD
450 unsigned char Buffer[(256 * 2) + 4];
451 } SAMPR_ENCRYPTED_USER_PASSWORD, *PSAMPR_ENCRYPTED_USER_PASSWORD;
453 typedef struct _SAMPR_ENCRYPTED_USER_PASSWORD_NEW
455 unsigned char Buffer[(256 * 2) + 4 + 16];
456 } SAMPR_ENCRYPTED_USER_PASSWORD_NEW, *PSAMPR_ENCRYPTED_USER_PASSWORD_NEW;
458 cpp_quote("#ifndef _NTSAM_")
459 typedef struct _USER_PRIMARY_GROUP_INFORMATION
461 unsigned long PrimaryGroupId;
462 } USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
464 typedef struct _USER_CONTROL_INFORMATION
466 unsigned long UserAccountControl;
467 } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
469 typedef struct _USER_EXPIRES_INFORMATION
471 OLD_LARGE_INTEGER AccountExpires;
472 } USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
475 typedef struct _SAMPR_LOGON_HOURS
477 unsigned short UnitsPerWeek;
478 [size_is(1260), length_is((UnitsPerWeek + 7) / 8)] unsigned char *LogonHours; // FIXME
479 } SAMPR_LOGON_HOURS, *PSAMPR_LOGON_HOURS;
481 typedef struct _SAMPR_USER_ALL_INFORMATION
483 OLD_LARGE_INTEGER LastLogon;
484 OLD_LARGE_INTEGER LastLogoff;
485 OLD_LARGE_INTEGER PasswordLastSet;
486 OLD_LARGE_INTEGER AccountExpires;
487 OLD_LARGE_INTEGER PasswordCanChange;
488 OLD_LARGE_INTEGER PasswordMustChange;
489 RPC_UNICODE_STRING UserName;
490 RPC_UNICODE_STRING FullName;
491 RPC_UNICODE_STRING HomeDirectory;
492 RPC_UNICODE_STRING HomeDirectoryDrive;
493 RPC_UNICODE_STRING ScriptPath;
494 RPC_UNICODE_STRING ProfilePath;
495 RPC_UNICODE_STRING AdminComment;
496 RPC_UNICODE_STRING WorkStations;
497 RPC_UNICODE_STRING UserComment;
498 RPC_UNICODE_STRING Parameters;
499 RPC_SHORT_BLOB LmOwfPassword;
500 RPC_SHORT_BLOB NtOwfPassword;
501 RPC_UNICODE_STRING PrivateData;
502 SAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor;
503 unsigned long UserId;
504 unsigned long PrimaryGroupId;
505 unsigned long UserAccountControl;
506 unsigned long WhichFields;
507 SAMPR_LOGON_HOURS LogonHours;
508 unsigned short BadPasswordCount;
509 unsigned short LogonCount;
510 unsigned short CountryCode;
511 unsigned short CodePage;
512 unsigned char LmPasswordPresent;
513 unsigned char NtPasswordPresent;
514 unsigned char PasswordExpired;
515 unsigned char PrivateDataSensitive;
516 } SAMPR_USER_ALL_INFORMATION, *PSAMPR_USER_ALL_INFORMATION;
518 typedef struct _SAMPR_USER_GENERAL_INFORMATION
520 RPC_UNICODE_STRING UserName;
521 RPC_UNICODE_STRING FullName;
522 unsigned long PrimaryGroupId;
523 RPC_UNICODE_STRING AdminComment;
524 RPC_UNICODE_STRING UserComment;
525 } SAMPR_USER_GENERAL_INFORMATION, *PSAMPR_USER_GENERAL_INFORMATION;
527 typedef struct _SAMPR_USER_PREFERENCES_INFORMATION
529 RPC_UNICODE_STRING UserComment;
530 RPC_UNICODE_STRING Reserved1;
531 unsigned short CountryCode;
532 unsigned short CodePage;
533 } SAMPR_USER_PREFERENCES_INFORMATION, *PSAMPR_USER_PREFERENCES_INFORMATION;
535 typedef struct _SAMPR_USER_PARAMETERS_INFORMATION
537 RPC_UNICODE_STRING Parameters;
538 } SAMPR_USER_PARAMETERS_INFORMATION, *PSAMPR_USER_PARAMETERS_INFORMATION;
540 typedef struct _SAMPR_USER_LOGON_INFORMATION
542 RPC_UNICODE_STRING UserName;
543 RPC_UNICODE_STRING FullName;
544 unsigned long UserId;
545 unsigned long PrimaryGroupId;
546 RPC_UNICODE_STRING HomeDirectory;
547 RPC_UNICODE_STRING HomeDirectoryDrive;
548 RPC_UNICODE_STRING ScriptPath;
549 RPC_UNICODE_STRING ProfilePath;
550 RPC_UNICODE_STRING WorkStations;
551 OLD_LARGE_INTEGER LastLogon;
552 OLD_LARGE_INTEGER LastLogoff;
553 OLD_LARGE_INTEGER PasswordLastSet;
554 OLD_LARGE_INTEGER PasswordCanChange;
555 OLD_LARGE_INTEGER PasswordMustChange;
556 SAMPR_LOGON_HOURS LogonHours;
557 unsigned short BadPasswordCount;
558 unsigned short LogonCount;
559 unsigned long UserAccountControl;
560 } SAMPR_USER_LOGON_INFORMATION, *PSAMPR_USER_LOGON_INFORMATION;
562 typedef struct _SAMPR_USER_ACCOUNT_INFORMATION
564 RPC_UNICODE_STRING UserName;
565 RPC_UNICODE_STRING FullName;
566 unsigned long UserId;
567 unsigned long PrimaryGroupId;
568 RPC_UNICODE_STRING HomeDirectory;
569 RPC_UNICODE_STRING HomeDirectoryDrive;
570 RPC_UNICODE_STRING ScriptPath;
571 RPC_UNICODE_STRING ProfilePath;
572 RPC_UNICODE_STRING AdminComment;
573 RPC_UNICODE_STRING WorkStations;
574 OLD_LARGE_INTEGER LastLogon;
575 OLD_LARGE_INTEGER LastLogoff;
576 SAMPR_LOGON_HOURS LogonHours;
577 unsigned short BadPasswordCount;
578 unsigned short LogonCount;
579 OLD_LARGE_INTEGER PasswordLastSet;
580 OLD_LARGE_INTEGER AccountExpires;
581 unsigned long UserAccountControl;
582 } SAMPR_USER_ACCOUNT_INFORMATION, *PSAMPR_USER_ACCOUNT_INFORMATION;
584 typedef struct _SAMPR_USER_A_NAME_INFORMATION
586 RPC_UNICODE_STRING UserName;
587 } SAMPR_USER_A_NAME_INFORMATION, *PSAMPR_USER_A_NAME_INFORMATION;
589 typedef struct _SAMPR_USER_F_NAME_INFORMATION
591 RPC_UNICODE_STRING FullName;
592 } SAMPR_USER_F_NAME_INFORMATION, *PSAMPR_USER_F_NAME_INFORMATION;
594 typedef struct _SAMPR_USER_NAME_INFORMATION
596 RPC_UNICODE_STRING UserName;
597 RPC_UNICODE_STRING FullName;
598 } SAMPR_USER_NAME_INFORMATION, *PSAMPR_USER_NAME_INFORMATION;
600 typedef struct _SAMPR_USER_HOME_INFORMATION
602 RPC_UNICODE_STRING HomeDirectory;
603 RPC_UNICODE_STRING HomeDirectoryDrive;
604 } SAMPR_USER_HOME_INFORMATION, *PSAMPR_USER_HOME_INFORMATION;
606 typedef struct _SAMPR_USER_SCRIPT_INFORMATION
608 RPC_UNICODE_STRING ScriptPath;
609 } SAMPR_USER_SCRIPT_INFORMATION, *PSAMPR_USER_SCRIPT_INFORMATION;
611 typedef struct _SAMPR_USER_PROFILE_INFORMATION
613 RPC_UNICODE_STRING ProfilePath;
614 } SAMPR_USER_PROFILE_INFORMATION, *PSAMPR_USER_PROFILE_INFORMATION;
616 typedef struct _SAMPR_USER_ADMIN_COMMENT_INFORMATION
618 RPC_UNICODE_STRING AdminComment;
619 } SAMPR_USER_ADMIN_COMMENT_INFORMATION, *PSAMPR_USER_ADMIN_COMMENT_INFORMATION;
621 typedef struct _SAMPR_USER_WORKSTATIONS_INFORMATION
623 RPC_UNICODE_STRING WorkStations;
624 } SAMPR_USER_WORKSTATIONS_INFORMATION, *PSAMPR_USER_WORKSTATIONS_INFORMATION;
626 typedef struct _SAMPR_USER_SET_PASSWORD_INFORMATION
628 // SAMPR_ENCRYPTED_USER_PASSWORD Password;
629 RPC_UNICODE_STRING Password;
630 BOOLEAN PasswordExpired;
631 } SAMPR_USER_SET_PASSWORD_INFORMATION, *PSAMPR_USER_SET_PASSWORD_INFORMATION;
633 typedef struct _SAMPR_USER_LOGON_HOURS_INFORMATION
635 SAMPR_LOGON_HOURS LogonHours;
636 } SAMPR_USER_LOGON_HOURS_INFORMATION, *PSAMPR_USER_LOGON_HOURS_INFORMATION;
638 typedef struct _SAMPR_USER_INTERNAL1_INFORMATION
640 ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword;
641 ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword;
642 BOOLEAN NtPasswordPresent;
643 BOOLEAN LmPasswordPresent;
644 BOOLEAN PasswordExpired;
645 } SAMPR_USER_INTERNAL1_INFORMATION, *PSAMPR_USER_INTERNAL1_INFORMATION;
647 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION
649 SAMPR_USER_ALL_INFORMATION I1;
650 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
651 } SAMPR_USER_INTERNAL4_INFORMATION, *PSAMPR_USER_INTERNAL4_INFORMATION;
653 typedef struct _SAMPR_USER_INTERNAL4_INFORMATION_NEW
655 SAMPR_USER_ALL_INFORMATION I1;
656 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
657 } SAMPR_USER_INTERNAL4_INFORMATION_NEW, *PSAMPR_USER_INTERNAL4_INFORMATION_NEW;
659 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION
661 SAMPR_ENCRYPTED_USER_PASSWORD UserPassword;
662 BOOLEAN PasswordExpired;
663 } SAMPR_USER_INTERNAL5_INFORMATION, *PSAMPR_USER_INTERNAL5_INFORMATION;
665 typedef struct _SAMPR_USER_INTERNAL5_INFORMATION_NEW
667 SAMPR_ENCRYPTED_USER_PASSWORD_NEW UserPassword;
668 BOOLEAN PasswordExpired;
669 } SAMPR_USER_INTERNAL5_INFORMATION_NEW, *PSAMPR_USER_INTERNAL5_INFORMATION_NEW;
671 cpp_quote("#ifndef _NTSAM_")
672 typedef enum _USER_INFORMATION_CLASS
674 UserGeneralInformation = 1,
675 UserPreferencesInformation = 2,
676 UserLogonInformation = 3,
677 UserLogonHoursInformation = 4,
678 UserAccountInformation = 5,
679 UserNameInformation = 6,
680 UserAccountNameInformation = 7,
681 UserFullNameInformation = 8,
682 UserPrimaryGroupInformation = 9,
683 UserHomeInformation = 10,
684 UserScriptInformation = 11,
685 UserProfileInformation = 12,
686 UserAdminCommentInformation = 13,
687 UserWorkStationsInformation = 14,
688 UserSetPasswordInformation = 15, /* This is missing from the SAM RPC documentation */
689 UserControlInformation = 16,
690 UserExpiresInformation = 17,
691 UserInternal1Information = 18,
692 UserInternal2Information = 19, /* This is missing from the SAM RPC documentation */
693 UserParametersInformation = 20,
694 UserAllInformation = 21,
695 UserInternal3Information = 22, /* This is missing from the SAM RPC documentation */
696 UserInternal4Information = 23,
697 UserInternal5Information = 24,
698 UserInternal4InformationNew = 25,
699 UserInternal5InformationNew = 26,
700 UserInternal6Information, /* This is missing from the SAM RPC documentation */
701 UserExtendedInformation, /* This is missing from the SAM RPC documentation */
702 UserLogonUIInformation, /* This is missing from the SAM RPC documentation */
703 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
706 typedef [switch_type(USER_INFORMATION_CLASS)] union _SAMPR_USER_INFO_BUFFER
708 [case(UserGeneralInformation)] SAMPR_USER_GENERAL_INFORMATION General;
709 [case(UserPreferencesInformation)] SAMPR_USER_PREFERENCES_INFORMATION Preferences;
710 [case(UserLogonInformation)] SAMPR_USER_LOGON_INFORMATION Logon;
711 [case(UserLogonHoursInformation)] SAMPR_USER_LOGON_HOURS_INFORMATION LogonHours;
712 [case(UserAccountInformation)] SAMPR_USER_ACCOUNT_INFORMATION Account;
713 [case(UserNameInformation)] SAMPR_USER_NAME_INFORMATION Name;
714 [case(UserAccountNameInformation)] SAMPR_USER_A_NAME_INFORMATION AccountName;
715 [case(UserFullNameInformation)] SAMPR_USER_F_NAME_INFORMATION FullName;
716 [case(UserPrimaryGroupInformation)] USER_PRIMARY_GROUP_INFORMATION PrimaryGroup;
717 [case(UserHomeInformation)] SAMPR_USER_HOME_INFORMATION Home;
718 [case(UserScriptInformation)] SAMPR_USER_SCRIPT_INFORMATION Script;
719 [case(UserProfileInformation)] SAMPR_USER_PROFILE_INFORMATION Profile;
720 [case(UserAdminCommentInformation)] SAMPR_USER_ADMIN_COMMENT_INFORMATION AdminComment;
721 [case(UserWorkStationsInformation)] SAMPR_USER_WORKSTATIONS_INFORMATION WorkStations;
722 [case(UserSetPasswordInformation)] SAMPR_USER_SET_PASSWORD_INFORMATION SetPassword;
723 [case(UserControlInformation)] USER_CONTROL_INFORMATION Control;
724 [case(UserExpiresInformation)] USER_EXPIRES_INFORMATION Expires;
725 [case(UserInternal1Information)] SAMPR_USER_INTERNAL1_INFORMATION Internal1;
726 [case(UserParametersInformation)] SAMPR_USER_PARAMETERS_INFORMATION Parameters;
727 [case(UserAllInformation)] SAMPR_USER_ALL_INFORMATION All;
728 [case(UserInternal4Information)] SAMPR_USER_INTERNAL4_INFORMATION Internal4;
729 [case(UserInternal5Information)] SAMPR_USER_INTERNAL5_INFORMATION Internal5;
730 [case(UserInternal4InformationNew)] SAMPR_USER_INTERNAL4_INFORMATION_NEW Internal4New;
731 [case(UserInternal5InformationNew)] SAMPR_USER_INTERNAL5_INFORMATION_NEW Internal5New;
732 } SAMPR_USER_INFO_BUFFER, *PSAMPR_USER_INFO_BUFFER;
734 typedef enum _PASSWORD_POLICY_VALIDATION_TYPE
736 SamValidateAuthentication = 1,
737 SamValidatePasswordChange,
738 SamValidatePasswordReset
739 } PASSWORD_POLICY_VALIDATION_TYPE;
741 typedef struct _SAM_VALIDATE_PASSWORD_HASH
743 unsigned long Length;
744 [unique,size_is(Length)] unsigned char* Hash;
745 } SAM_VALIDATE_PASSWORD_HASH, *PSAM_VALIDATE_PASSWORD_HASH;
747 typedef struct _SAM_VALIDATE_PERSISTED_FIELDS
749 unsigned long PresentFields;
750 LARGE_INTEGER PasswordLastSet;
751 LARGE_INTEGER BadPasswordTime;
752 LARGE_INTEGER LockoutTime;
753 unsigned long BadPasswordCount;
754 unsigned long PasswordHistoryLength;
755 [unique,size_is(PasswordHistoryLength)] PSAM_VALIDATE_PASSWORD_HASH PasswordHistory;
756 } SAM_VALIDATE_PERSISTED_FIELDS, *PSAM_VALIDATE_PERSISTED_FIELDS;
758 typedef enum _SAM_VALIDATE_VALIDATION_STATUS
760 SamValidateSuccess = 0,
761 SamValidatePasswordMustChange,
762 SamValidateAccountLockedOut,
763 SamValidatePasswordExpired,
764 SamValidatePasswordIncorrect,
765 SamValidatePasswordIsInHistory,
766 SamValidatePasswordTooShort,
767 SamValidatePasswordTooLong,
768 SamValidatePasswordNotComplexEnough,
769 SamValidatePasswordTooRecent,
770 SamValidatePasswordFilterError
771 } SAM_VALIDATE_VALIDATION_STATUS, *PSAM_VALIDATE_VALIDATION_STATUS;
773 typedef struct _SAM_VALIDATE_STANDARD_OUTPUT_ARG
775 SAM_VALIDATE_PERSISTED_FIELDS ChangedPersistedFields;
776 SAM_VALIDATE_VALIDATION_STATUS ValidationStatus;
777 } SAM_VALIDATE_STANDARD_OUTPUT_ARG, *PSAM_VALIDATE_STANDARD_OUTPUT_ARG;
779 typedef struct _SAM_VALIDATE_AUTHENTICATION_INPUT_ARG
781 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
782 unsigned char PasswordMatched;
783 } SAM_VALIDATE_AUTHENTICATION_INPUT_ARG, *PSAM_VALIDATE_AUTHENTICATION_INPUT_ARG;
785 typedef struct _SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG
787 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
788 RPC_UNICODE_STRING ClearPassword;
789 RPC_UNICODE_STRING UserAccountName;
790 SAM_VALIDATE_PASSWORD_HASH HashedPassword;
791 unsigned char PasswordMatch;
792 } SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG, *PSAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
794 typedef struct _SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG
796 SAM_VALIDATE_PERSISTED_FIELDS InputPersistedFields;
797 RPC_UNICODE_STRING ClearPassword;
798 RPC_UNICODE_STRING UserAccountName;
799 SAM_VALIDATE_PASSWORD_HASH HashedPassword;
800 unsigned char PasswordMustChangeAtNextLogon;
801 unsigned char ClearLockout;
802 } SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG, *PSAM_VALIDATE_PASSWORD_RESET_INPUT_ARG;
804 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_INPUT_ARG
806 [case(SamValidateAuthentication)] SAM_VALIDATE_AUTHENTICATION_INPUT_ARG ValidateAuthenticationInput;
807 [case(SamValidatePasswordChange)] SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG ValidatePasswordChangeInput;
808 [case(SamValidatePasswordReset)] SAM_VALIDATE_PASSWORD_RESET_INPUT_ARG ValidatePasswordResetInput;
809 } SAM_VALIDATE_INPUT_ARG, *PSAM_VALIDATE_INPUT_ARG;
811 typedef [switch_type(PASSWORD_POLICY_VALIDATION_TYPE)] union _SAM_VALIDATE_OUTPUT_ARG
813 [case(SamValidateAuthentication)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidateAuthenticationOutput;
814 [case(SamValidatePasswordChange)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidatePasswordChangeOutput;
815 [case(SamValidatePasswordReset)] SAM_VALIDATE_STANDARD_OUTPUT_ARG ValidatePasswordResetOutput;
816 } SAM_VALIDATE_OUTPUT_ARG, *PSAM_VALIDATE_OUTPUT_ARG;
819 uuid(12345778-1234-ABCD-EF00-0123456789AC),
821 pointer_default(unique),
822 endpoint("ncacn_np:[\\pipe\\samr]")
833 [in, unique] PSAMPR_SERVER_NAME ServerName,
834 [out] SAMPR_HANDLE *ServerHandle,
835 [in] ACCESS_MASK DesiredAccess);
841 [in,out] SAMPR_HANDLE *SamHandle);
846 SamrSetSecurityObject(
847 [in] SAMPR_HANDLE ObjectHandle,
848 [in] SECURITY_INFORMATION SecurityInformation,
849 [in] PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor);
854 SamrQuerySecurityObject(
855 [in] SAMPR_HANDLE ObjectHandle,
856 [in] SECURITY_INFORMATION SecurityInformation,
857 [out] PSAMPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor);
862 SamrShutdownSamServer(
863 [in] SAMPR_HANDLE ServerHandle);
868 SamrLookupDomainInSamServer(
869 [in] SAMPR_HANDLE ServerHandle,
870 [in] PRPC_UNICODE_STRING Name,
871 [out] PRPC_SID *DomainId);
876 SamrEnumerateDomainsInSamServer(
877 [in] SAMPR_HANDLE ServerHandle,
878 [in,out] unsigned long *EnumerationContext,
879 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
880 [in] unsigned long PreferedMaximumLength,
881 [out] unsigned long *CountReturned);
887 [in] SAMPR_HANDLE ServerHandle,
888 [in] ACCESS_MASK DesiredAccess,
889 [in] PRPC_SID DomainId,
890 [out] SAMPR_HANDLE *DomainHandle);
895 SamrQueryInformationDomain(
896 [in] SAMPR_HANDLE DomainHandle,
897 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
898 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
903 SamrSetInformationDomain(
904 [in] SAMPR_HANDLE DomainHandle,
905 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
906 [in, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER DomainInformation);
911 SamrCreateGroupInDomain(
912 [in] SAMPR_HANDLE DomainHandle,
913 [in] PRPC_UNICODE_STRING Name,
914 [in] ACCESS_MASK DesiredAccess,
915 [out] SAMPR_HANDLE *GroupHandle,
916 [out] unsigned long *RelativeId);
921 SamrEnumerateGroupsInDomain(
922 [in] SAMPR_HANDLE DomainHandle,
923 [in,out] unsigned long *EnumerationContext,
924 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
925 [in] unsigned long PreferedMaximumLength,
926 [out] unsigned long *CountReturned);
931 SamrCreateUserInDomain([in] SAMPR_HANDLE DomainHandle,
932 [in] PRPC_UNICODE_STRING Name,
933 [in] ACCESS_MASK DesiredAccess,
934 [out] SAMPR_HANDLE *UserHandle,
935 [out] unsigned long *RelativeId);
940 SamrEnumerateUsersInDomain([in] SAMPR_HANDLE DomainHandle,
941 [in,out] unsigned long *EnumerationContext,
942 [in] unsigned long UserAccountControl,
943 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
944 [in] unsigned long PreferedMaximumLength,
945 [out] unsigned long *CountReturned);
950 SamrCreateAliasInDomain([in] SAMPR_HANDLE DomainHandle,
951 [in] PRPC_UNICODE_STRING AccountName,
952 [in] ACCESS_MASK DesiredAccess,
953 [out] SAMPR_HANDLE *AliasHandle,
954 [out] unsigned long *RelativeId);
959 SamrEnumerateAliasesInDomain([in] SAMPR_HANDLE DomainHandle,
960 [in,out] unsigned long *EnumerationContext,
961 [out] PSAMPR_ENUMERATION_BUFFER *Buffer,
962 [in] unsigned long PreferedMaximumLength,
963 [out] unsigned long *CountReturned);
968 SamrGetAliasMembership([in] SAMPR_HANDLE DomainHandle,
969 [in] PSAMPR_PSID_ARRAY SidArray,
970 [out] PSAMPR_ULONG_ARRAY Membership);
975 SamrLookupNamesInDomain([in] SAMPR_HANDLE DomainHandle,
976 [in, range(0, 1000)] unsigned long Count,
977 [in, size_is(1000), length_is(Count)] RPC_UNICODE_STRING Names[*],
978 [out] PSAMPR_ULONG_ARRAY RelativeIds,
979 [out] PSAMPR_ULONG_ARRAY Use);
984 SamrLookupIdsInDomain(
985 [in] SAMPR_HANDLE DomainHandle,
986 [in, range(0, 1000)] unsigned long Count,
987 [in, size_is(1000), length_is(Count)] unsigned long *RelativeIds,
988 [out] PSAMPR_RETURNED_USTRING_ARRAY Names,
989 [out] PSAMPR_ULONG_ARRAY Use);
995 [in] SAMPR_HANDLE DomainHandle,
996 [in] ACCESS_MASK DesiredAccess,
997 [in] unsigned long GroupId,
998 [out] SAMPR_HANDLE *GroupHandle);
1003 SamrQueryInformationGroup(
1004 [in] SAMPR_HANDLE GroupHandle,
1005 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1006 [out, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER *Buffer);
1011 SamrSetInformationGroup(
1012 [in] SAMPR_HANDLE GroupHandle,
1013 [in] GROUP_INFORMATION_CLASS GroupInformationClass,
1014 [in, switch_is(GroupInformationClass)] PSAMPR_GROUP_INFO_BUFFER Buffer);
1019 SamrAddMemberToGroup(
1020 [in] SAMPR_HANDLE GroupHandle,
1021 [in] unsigned long MemberId,
1022 [in] unsigned long Attributes);
1028 [in,out] SAMPR_HANDLE *GroupHandle);
1033 SamrRemoveMemberFromGroup(
1034 [in] SAMPR_HANDLE GroupHandle,
1035 [in] unsigned long MemberId);
1040 SamrGetMembersInGroup(
1041 [in] SAMPR_HANDLE GroupHandle,
1042 [out] PSAMPR_GET_MEMBERS_BUFFER *Members);
1047 SamrSetMemberAttributesOfGroup(
1048 [in] SAMPR_HANDLE GroupHandle,
1049 [in] unsigned long MemberId,
1050 [in] unsigned long Attributes);
1056 [in] SAMPR_HANDLE DomainHandle,
1057 [in] ACCESS_MASK DesiredAccess,
1059 [out] SAMPR_HANDLE *AliasHandle);
1064 SamrQueryInformationAlias(
1065 [in] SAMPR_HANDLE AliasHandle,
1066 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1067 [out, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER *Buffer);
1072 SamrSetInformationAlias(
1073 [in] SAMPR_HANDLE AliasHandle,
1074 [in] ALIAS_INFORMATION_CLASS AliasInformationClass,
1075 [in, switch_is(AliasInformationClass)] PSAMPR_ALIAS_INFO_BUFFER Buffer);
1081 [in, out] SAMPR_HANDLE *AliasHandle);
1086 SamrAddMemberToAlias(
1087 [in] SAMPR_HANDLE AliasHandle,
1088 [in] PRPC_SID MemberId);
1093 SamrRemoveMemberFromAlias(
1094 [in] SAMPR_HANDLE AliasHandle,
1095 [in] PRPC_SID MemberId);
1100 SamrGetMembersInAlias(
1101 [in] SAMPR_HANDLE AliasHandle,
1102 [out] PSAMPR_PSID_ARRAY_OUT Members);
1108 [in] SAMPR_HANDLE DomainHandle,
1109 [in] ACCESS_MASK DesiredAccess,
1111 [out] SAMPR_HANDLE *UserHandle);
1117 [in,out] SAMPR_HANDLE *UserHandle);
1122 SamrQueryInformationUser(
1123 [in] SAMPR_HANDLE UserHandle,
1124 [in] USER_INFORMATION_CLASS UserInformationClass,
1125 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
1130 SamrSetInformationUser(
1131 [in] SAMPR_HANDLE UserHandle,
1132 [in] USER_INFORMATION_CLASS UserInformationClass,
1133 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
1138 SamrChangePasswordUser(
1139 [in] SAMPR_HANDLE UserHandle,
1140 [in] unsigned char LmPresent,
1141 [in, unique] PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm,
1142 [in, unique] PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm,
1143 [in] unsigned char NtPresent,
1144 [in, unique] PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt,
1145 [in, unique] PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt,
1146 [in] unsigned char NtCrossEncryptionPresent,
1147 [in, unique] PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm,
1148 [in] unsigned char LmCrossEncryptionPresent,
1149 [in, unique] PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt);
1154 SamrGetGroupsForUser(
1155 [in] SAMPR_HANDLE UserHandle,
1156 [out] PSAMPR_GET_GROUPS_BUFFER *Groups);
1161 SamrQueryDisplayInformation(
1162 [in] SAMPR_HANDLE DomainHandle,
1163 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1164 [in] unsigned long Index,
1165 [in] unsigned long EntryCount,
1166 [in] unsigned long PreferredMaximumLength,
1167 [out] unsigned long * TotalAvailable,
1168 [out] unsigned long * TotalReturned,
1169 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1174 SamrGetDisplayEnumerationIndex(
1175 [in] SAMPR_HANDLE DomainHandle,
1176 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1177 [in] PRPC_UNICODE_STRING Prefix,
1178 [out] unsigned long *Index);
1183 SamrTestPrivateFunctionsDomain(
1184 [in] SAMPR_HANDLE DomainHandle);
1189 SamrTestPrivateFunctionsUser(
1190 [in] SAMPR_HANDLE UserHandle);
1195 SamrGetUserDomainPasswordInformation(
1196 [in] SAMPR_HANDLE UserHandle,
1197 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1202 SamrRemoveMemberFromForeignDomain(
1203 [in] SAMPR_HANDLE DomainHandle,
1204 [in] PRPC_SID MemberSid);
1209 SamrQueryInformationDomain2(
1210 [in] SAMPR_HANDLE DomainHandle,
1211 [in] DOMAIN_INFORMATION_CLASS DomainInformationClass,
1212 [out, switch_is(DomainInformationClass)] PSAMPR_DOMAIN_INFO_BUFFER *Buffer);
1217 SamrQueryInformationUser2(
1218 [in] SAMPR_HANDLE UserHandle,
1219 [in] USER_INFORMATION_CLASS UserInformationClass,
1220 [out, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER *Buffer);
1225 SamrQueryDisplayInformation2(
1226 [in] SAMPR_HANDLE DomainHandle,
1227 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1228 [in] unsigned long Index,
1229 [in] unsigned long EntryCount,
1230 [in] unsigned long PreferredMaximumLength,
1231 [out] unsigned long *TotalAvailable,
1232 [out] unsigned long *TotalReturned,
1233 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1238 SamrGetDisplayEnumerationIndex2(
1239 [in] SAMPR_HANDLE DomainHandle,
1240 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1241 [in] PRPC_UNICODE_STRING Prefix,
1242 [out] unsigned long *Index);
1247 SamrCreateUser2InDomain(
1248 [in] SAMPR_HANDLE DomainHandle,
1249 [in] PRPC_UNICODE_STRING Name,
1250 [in] unsigned long AccountType,
1251 [in] ACCESS_MASK DesiredAccess,
1252 [out] SAMPR_HANDLE *UserHandle,
1253 [out] unsigned long *GrantedAccess,
1254 [out] unsigned long *RelativeId);
1259 SamrQueryDisplayInformation3(
1260 [in] SAMPR_HANDLE DomainHandle,
1261 [in] DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
1262 [in] unsigned long Index,
1263 [in] unsigned long EntryCount,
1264 [in] unsigned long PreferredMaximumLength,
1265 [out] unsigned long *TotalAvailable,
1266 [out] unsigned long *TotalReturned,
1267 [out, switch_is(DisplayInformationClass)] PSAMPR_DISPLAY_INFO_BUFFER Buffer);
1272 SamrAddMultipleMembersToAlias(
1273 [in] SAMPR_HANDLE AliasHandle,
1274 [in] PSAMPR_PSID_ARRAY MembersBuffer);
1279 SamrRemoveMultipleMembersFromAlias(
1280 [in] SAMPR_HANDLE AliasHandle,
1281 [in] PSAMPR_PSID_ARRAY MembersBuffer);
1286 SamrOemChangePasswordUser2(
1287 [in] handle_t BindingHandle,
1288 [in,unique] PRPC_STRING ServerName,
1289 [in] PRPC_STRING UserName,
1290 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
1291 [in,unique] PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewLm);
1296 SamrUnicodeChangePasswordUser2(
1297 [in] handle_t BindingHandle,
1298 [in,unique] PRPC_UNICODE_STRING ServerName,
1299 [in] PRPC_UNICODE_STRING UserName,
1300 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldNt,
1301 [in,unique] PENCRYPTED_NT_OWF_PASSWORD OldNtOwfPasswordEncryptedWithNewNt,
1302 [in] unsigned char LmPresent,
1303 [in,unique] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
1304 [in,unique] PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewNt);
1309 SamrGetDomainPasswordInformation(
1310 [in] handle_t BindingHandle,
1311 [in,unique] PRPC_UNICODE_STRING Unused,
1312 [out] PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation);
1318 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1319 [out] SAMPR_HANDLE *ServerHandle,
1320 [in] ACCESS_MASK DesiredAccess);
1325 SamrSetInformationUser2(
1326 [in] SAMPR_HANDLE UserHandle,
1327 [in] USER_INFORMATION_CLASS UserInformationClass,
1328 [in, switch_is(UserInformationClass)] PSAMPR_USER_INFO_BUFFER Buffer);
1333 SamrSetBootKeyInformation(
1334 [in] handle_t BindingHandle); /* FIXME */
1339 SamrGetBootKeyInformation(
1340 [in] handle_t BindingHandle); /* FIXME */
1346 [in] handle_t BindingHandle); /* FIXME */
1352 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1353 [out] SAMPR_HANDLE *ServerHandle,
1354 [in] unsigned long ClientRevision,
1355 [in] ACCESS_MASK DesiredAccess);
1360 SamrUnicodeChangePasswordUser3(
1361 [in] handle_t BindingHandle); /* FIXME */
1367 [in,unique,string] PSAMPR_SERVER_NAME ServerName,
1368 [in] ACCESS_MASK DesiredAccess,
1369 [in] unsigned long InVersion,
1370 [in,switch_is(InVersion)] SAMPR_REVISION_INFO *InRevisionInfo,
1371 [out] unsigned long *OutVersion,
1372 [out,switch_is(*OutVersion)] SAMPR_REVISION_INFO *OutRevisionInfo,
1373 [out] SAMPR_HANDLE *ServerHandle);
1379 [in] SAMPR_HANDLE ObjectHandle,
1380 [in] unsigned long Rid,
1381 [out] PRPC_SID *Sid);
1386 SamrSetDSRMPassword(
1387 [in] handle_t BindingHandle,
1388 [in,unique] PRPC_UNICODE_STRING Unused,
1389 [in] unsigned long UserId,
1390 [in,unique] PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword);
1395 SamrValidatePassword(
1396 [in] handle_t Handle,
1397 [in] PASSWORD_POLICY_VALIDATION_TYPE ValidationType,
1398 [in,switch_is(ValidationType)] PSAM_VALIDATE_INPUT_ARG InputArg,
1399 [out,switch_is(ValidationType)] PSAM_VALIDATE_OUTPUT_ARG *OutputArg);