208 ULONG AccountControl = 0;
237 return AccountControl;
246 ULONG SystemSecondsSince1970;
247 ULONG PasswordSecondsSince1970;
257 return SystemSecondsSince1970 - PasswordSecondsSince1970;
306 TRACE(
"SamQuerySecurityObject() failed (Status 0x%08lx)\n",
Status);
317 TRACE(
"RtlGetDaclSecurityDescriptor() failed (Status 0x%08lx)\n",
Status);
322 if (Present ==
FALSE)
324 TRACE(
"No DACL present\n");
335 TRACE(
"RtlQueryInformationAcl() failed (Status 0x%08lx)\n",
Status);
341 if (LocalDacl ==
NULL)
343 TRACE(
"Memory allocation failed\n");
358 TRACE(
"done (ApiStatus: 0x%08lx)\n", ApiStatus);
419 ULONG GroupCount, SidCount, AliasCount,
i;
426 FIXME(
"GetUserPrivileges(%p)\n", UserHandle);
434 ERR(
"SamGetGroupsForUser() failed (Status 0x%08lx)\n",
Status);
460 for (
i = 0;
i < GroupCount;
i++)
463 GroupMembership[
i].RelativeId,
481 ERR(
"SamGetAliasMembership() failed (Status 0x%08lx)\n",
Status);
489 for (
i = 0;
i < AliasCount;
i++)
491 switch (AliasArray[
i])
530 if (AliasArray !=
NULL)
533 if (SidArray !=
NULL)
535 for (
i = 0;
i < SidCount;
i++)
541 if (GroupMembership !=
NULL)
562 DWORD Priv = 0, AuthFlags = 0;
584 ERR(
"SamQueryInformationUser failed (Status %08lx)\n",
Status);
614 UserInfo->UserName.Length +
sizeof(
WCHAR);
619 UserInfo->UserName.Length +
sizeof(
WCHAR) +
620 UserInfo->HomeDirectory.Length +
sizeof(
WCHAR) +
621 UserInfo->AdminComment.Length +
sizeof(
WCHAR) +
622 UserInfo->ScriptPath.Length +
sizeof(
WCHAR);
627 UserInfo->UserName.Length +
sizeof(
WCHAR) +
628 UserInfo->HomeDirectory.Length +
sizeof(
WCHAR) +
629 UserInfo->AdminComment.Length +
sizeof(
WCHAR) +
630 UserInfo->ScriptPath.Length +
sizeof(
WCHAR) +
631 UserInfo->FullName.Length +
sizeof(
WCHAR) +
632 UserInfo->UserComment.Length +
sizeof(
WCHAR) +
633 UserInfo->Parameters.Length +
sizeof(
WCHAR) +
634 UserInfo->WorkStations.Length +
sizeof(
WCHAR) +
637 if (UserInfo->LogonHours.UnitsPerWeek > 0)
638 Size += (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8;
643 UserInfo->UserName.Length +
sizeof(
WCHAR) +
644 UserInfo->HomeDirectory.Length +
sizeof(
WCHAR) +
645 UserInfo->AdminComment.Length +
sizeof(
WCHAR) +
646 UserInfo->ScriptPath.Length +
sizeof(
WCHAR) +
647 UserInfo->FullName.Length +
sizeof(
WCHAR) +
648 UserInfo->UserComment.Length +
sizeof(
WCHAR) +
649 UserInfo->Parameters.Length +
sizeof(
WCHAR) +
650 UserInfo->WorkStations.Length +
sizeof(
WCHAR) +
652 UserInfo->ProfilePath.Length +
sizeof(
WCHAR) +
653 UserInfo->HomeDirectoryDrive.Length +
sizeof(
WCHAR);
655 if (UserInfo->LogonHours.UnitsPerWeek > 0)
656 Size += (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8;
661 UserInfo->UserName.Length +
sizeof(
WCHAR) +
662 UserInfo->HomeDirectory.Length +
sizeof(
WCHAR) +
663 UserInfo->AdminComment.Length +
sizeof(
WCHAR) +
664 UserInfo->ScriptPath.Length +
sizeof(
WCHAR) +
665 UserInfo->FullName.Length +
sizeof(
WCHAR) +
666 UserInfo->UserComment.Length +
sizeof(
WCHAR) +
667 UserInfo->Parameters.Length +
sizeof(
WCHAR) +
668 UserInfo->WorkStations.Length +
sizeof(
WCHAR) +
670 UserInfo->ProfilePath.Length +
sizeof(
WCHAR) +
671 UserInfo->HomeDirectoryDrive.Length +
sizeof(
WCHAR);
673 if (UserInfo->LogonHours.UnitsPerWeek > 0)
674 Size += (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8;
681 UserInfo->UserName.Length +
sizeof(
WCHAR) +
682 UserInfo->AdminComment.Length +
sizeof(
WCHAR) +
683 UserInfo->UserComment.Length +
sizeof(
WCHAR) +
684 UserInfo->FullName.Length +
sizeof(
WCHAR);
689 UserInfo->UserName.Length +
sizeof(
WCHAR) +
690 UserInfo->AdminComment.Length +
sizeof(
WCHAR) +
691 UserInfo->UserComment.Length +
sizeof(
WCHAR) +
692 UserInfo->FullName.Length +
sizeof(
WCHAR) +
693 UserInfo->HomeDirectory.Length +
sizeof(
WCHAR) +
694 UserInfo->Parameters.Length +
sizeof(
WCHAR) +
696 UserInfo->WorkStations.Length +
sizeof(
WCHAR);
698 if (UserInfo->LogonHours.UnitsPerWeek > 0)
699 Size += (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8;
704 UserInfo->UserName.Length +
sizeof(
WCHAR) +
705 UserInfo->FullName.Length +
sizeof(
WCHAR) +
706 UserInfo->AdminComment.Length +
sizeof(
WCHAR);
711 UserInfo->UserName.Length +
sizeof(
WCHAR) +
712 UserInfo->FullName.Length +
sizeof(
WCHAR) +
713 UserInfo->AdminComment.Length +
sizeof(
WCHAR);
739 UserInfo->UserName.Buffer,
740 UserInfo->UserName.Length);
752 UserInfo->UserName.Buffer,
753 UserInfo->UserName.Length);
765 UserInfo->HomeDirectory.Buffer,
766 UserInfo->HomeDirectory.Length);
772 UserInfo->AdminComment.Buffer,
773 UserInfo->AdminComment.Length);
782 UserInfo->ScriptPath.Buffer,
783 UserInfo->ScriptPath.Length);
795 UserInfo->UserName.Buffer,
796 UserInfo->UserName.Length);
808 UserInfo->HomeDirectory.Buffer,
809 UserInfo->HomeDirectory.Length);
815 UserInfo->AdminComment.Buffer,
816 UserInfo->AdminComment.Length);
825 UserInfo->ScriptPath.Buffer,
826 UserInfo->ScriptPath.Length);
834 UserInfo->FullName.Buffer,
835 UserInfo->FullName.Length);
841 UserInfo->UserComment.Buffer,
842 UserInfo->UserComment.Length);
848 UserInfo->Parameters.Buffer,
849 UserInfo->Parameters.Length);
855 UserInfo->WorkStations.Buffer,
856 UserInfo->WorkStations.Length);
860 if (UserInfo->LastLogon.QuadPart == 0)
866 if (UserInfo->LastLogoff.QuadPart == 0)
872 if (UserInfo->AccountExpires.QuadPart ==
MAXLONGLONG)
881 if (UserInfo->LogonHours.UnitsPerWeek > 0)
886 UserInfo->LogonHours.LogonHours,
887 (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8);
914 UserInfo->UserName.Buffer,
915 UserInfo->UserName.Length);
927 UserInfo->HomeDirectory.Buffer,
928 UserInfo->HomeDirectory.Length);
934 UserInfo->AdminComment.Buffer,
935 UserInfo->AdminComment.Length);
944 UserInfo->ScriptPath.Buffer,
945 UserInfo->ScriptPath.Length);
953 UserInfo->FullName.Buffer,
954 UserInfo->FullName.Length);
960 UserInfo->UserComment.Buffer,
961 UserInfo->UserComment.Length);
967 UserInfo->Parameters.Buffer,
968 UserInfo->Parameters.Length);
974 UserInfo->WorkStations.Buffer,
975 UserInfo->WorkStations.Length);
979 if (UserInfo->LastLogon.QuadPart == 0)
985 if (UserInfo->LastLogoff.QuadPart == 0)
991 if (UserInfo->AccountExpires.QuadPart ==
MAXLONGLONG)
1000 if (UserInfo->LogonHours.UnitsPerWeek > 0)
1005 UserInfo->LogonHours.LogonHours,
1006 (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8);
1028 UserInfo->ProfilePath.Buffer,
1029 UserInfo->ProfilePath.Length);
1035 UserInfo->HomeDirectoryDrive.Buffer,
1036 UserInfo->HomeDirectoryDrive.Length);
1051 UserInfo->UserName.Buffer,
1052 UserInfo->UserName.Length);
1064 UserInfo->HomeDirectory.Buffer,
1065 UserInfo->HomeDirectory.Length);
1071 UserInfo->AdminComment.Buffer,
1072 UserInfo->AdminComment.Length);
1081 UserInfo->ScriptPath.Buffer,
1082 UserInfo->ScriptPath.Length);
1090 UserInfo->FullName.Buffer,
1091 UserInfo->FullName.Length);
1097 UserInfo->UserComment.Buffer,
1098 UserInfo->UserComment.Length);
1104 UserInfo->Parameters.Buffer,
1105 UserInfo->Parameters.Length);
1111 UserInfo->WorkStations.Buffer,
1112 UserInfo->WorkStations.Length);
1116 if (UserInfo->LastLogon.QuadPart == 0)
1122 if (UserInfo->LastLogoff.QuadPart == 0)
1128 if (UserInfo->AccountExpires.QuadPart ==
MAXLONGLONG)
1137 if (UserInfo->LogonHours.UnitsPerWeek > 0)
1142 UserInfo->LogonHours.LogonHours,
1143 (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8);
1169 UserInfo->ProfilePath.Buffer,
1170 UserInfo->ProfilePath.Length);
1176 UserInfo->HomeDirectoryDrive.Buffer,
1177 UserInfo->HomeDirectoryDrive.Length);
1192 UserInfo->UserName.Buffer,
1193 UserInfo->UserName.Length);
1200 UserInfo->AdminComment.Buffer,
1201 UserInfo->AdminComment.Length);
1207 UserInfo->UserComment.Buffer,
1208 UserInfo->UserComment.Length);
1214 UserInfo->FullName.Buffer,
1215 UserInfo->FullName.Length);
1227 UserInfo->UserName.Buffer,
1228 UserInfo->UserName.Length);
1235 UserInfo->AdminComment.Buffer,
1236 UserInfo->AdminComment.Length);
1242 UserInfo->UserComment.Buffer,
1243 UserInfo->UserComment.Length);
1249 UserInfo->FullName.Buffer,
1250 UserInfo->FullName.Length);
1261 UserInfo->HomeDirectory.Buffer,
1262 UserInfo->HomeDirectory.Length);
1268 UserInfo->Parameters.Buffer,
1269 UserInfo->Parameters.Length);
1273 if (UserInfo->LastLogon.QuadPart == 0)
1279 if (UserInfo->LastLogoff.QuadPart == 0)
1299 UserInfo->WorkStations.Buffer,
1300 UserInfo->WorkStations.Length);
1307 if (UserInfo->LogonHours.UnitsPerWeek > 0)
1312 UserInfo->LogonHours.LogonHours,
1313 (((
ULONG)UserInfo->LogonHours.UnitsPerWeek) + 7) / 8);
1329 UserInfo->UserName.Buffer,
1330 UserInfo->UserName.Length);
1337 UserInfo->FullName.Buffer,
1338 UserInfo->FullName.Length);
1344 UserInfo->AdminComment.Buffer,
1345 UserInfo->AdminComment.Length);
1363 UserInfo->UserName.Buffer,
1364 UserInfo->UserName.Length);
1371 UserInfo->FullName.Buffer,
1372 UserInfo->FullName.Length);
1378 UserInfo->AdminComment.Buffer,
1379 UserInfo->AdminComment.Length);
1393 if (UserInfo !=
NULL)
1405 if (LocalBuffer !=
NULL)
1603 if (parm_err !=
NULL)
1717 if (parm_err !=
NULL)
1853 if (parm_err !=
NULL)
1986 if (parm_err !=
NULL)
2136 if (parm_err !=
NULL)
2200 ERR(
"SamSetInformationUser failed (Status %08lx)\n",
Status);
2233 ERR(
"SamLookupNamesInDomain(%wZ) failed (Status %08lx)\n", UserName,
Status);
2240 ERR(
"Object is not a user!\n");
2252 ERR(
"SamOpenUser failed (Status %08lx)\n",
Status);
2258 if (RelativeIds !=
NULL)
2290 if (parm_err !=
NULL)
2306 if (servername !=
NULL)
2316 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
2323 (servername !=
NULL) ? &ServerName :
NULL,
2328 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
2347 ERR(
"SamCreateUser2InDomain failed (Status %08lx)\n",
Status);
2359 ERR(
"SetUserInfo failed (Status %lu)\n", ApiStatus);
2364 if (UserHandle !=
NULL)
2372 if (DomainHandle !=
NULL)
2375 if (ServerHandle !=
NULL)
2406 ULONG RequestBufferSize;
2407 ULONG ResponseBufferSize = 0;
2421 if ((oldpassword ==
NULL) ||
2422 (newpassword ==
NULL))
2452 (
PVOID*)&RequestBuffer);
2458 RequestBuffer->Impersonating =
TRUE;
2463 RequestBuffer->DomainName.Length =
wcslen(domainname) *
sizeof(
WCHAR);
2464 RequestBuffer->DomainName.MaximumLength = RequestBuffer->DomainName.Length +
sizeof(
WCHAR);
2465 RequestBuffer->DomainName.Buffer =
Ptr;
2469 RequestBuffer->DomainName.MaximumLength);
2475 RequestBuffer->AccountName.MaximumLength = RequestBuffer->AccountName.Length +
sizeof(
WCHAR);
2476 RequestBuffer->AccountName.Buffer =
Ptr;
2480 RequestBuffer->AccountName.MaximumLength);
2485 RequestBuffer->OldPassword.Length =
wcslen(oldpassword) *
sizeof(
WCHAR);
2486 RequestBuffer->OldPassword.MaximumLength = RequestBuffer->OldPassword.Length +
sizeof(
WCHAR);
2487 RequestBuffer->OldPassword.Buffer =
Ptr;
2491 RequestBuffer->OldPassword.MaximumLength);
2496 RequestBuffer->NewPassword.Length =
wcslen(newpassword) *
sizeof(
WCHAR);
2497 RequestBuffer->NewPassword.MaximumLength = RequestBuffer->NewPassword.Length +
sizeof(
WCHAR);
2498 RequestBuffer->NewPassword.Buffer =
Ptr;
2502 RequestBuffer->NewPassword.MaximumLength);
2509 (
PVOID*)&ResponseBuffer,
2510 &ResponseBufferSize,
2525 if (RequestBuffer !=
NULL)
2528 if (ResponseBuffer !=
NULL)
2556 if (servername !=
NULL)
2568 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
2579 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
2591 TRACE(
"OpenUserByName(%wZ) failed (ApiStatus %lu)\n", &UserName, ApiStatus);
2595 if (UserHandle ==
NULL)
2597 if (DomainHandle !=
NULL)
2600 DomainHandle =
NULL;
2605 (servername !=
NULL) ? &ServerName :
NULL,
2610 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
2622 ERR(
"OpenUserByName(%wZ) failed (ApiStatus %lu)\n", &UserName, ApiStatus);
2633 ERR(
"SamDeleteUser failed (Status %08lx)\n",
Status);
2642 if (UserHandle !=
NULL)
2645 if (DomainHandle !=
NULL)
2648 if (ServerHandle !=
NULL)
2668 EnumContext->EnumerationContext = 0;
2669 EnumContext->Buffer =
NULL;
2670 EnumContext->Count = 0;
2671 EnumContext->Index = 0;
2672 EnumContext->BuiltinDone =
FALSE;
2676 if (EnumContext->EnumHandle == 0)
2686 *AllocatedEnumContext = EnumContext;
2719 ListEntry = ListEntry->
Flink)
2722 if (EnumContext->
EnumHandle == EnumerationHandle)
2724 FoundEnumContext = EnumContext;
2732 return FoundEnumContext;
2760 filter,
bufptr, prefmaxlen, entriesread, totalentries, resume_handle);
2766 if (servername !=
NULL)
2769 if (resume_handle !=
NULL && *resume_handle != 0)
2785 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
2795 ERR(
"GetAccountDomainSid failed (Status %08lx)\n",
Status);
2807 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
2816 ERR(
"GetBuiltinDomainSid failed (Status %08lx)\n",
Status);
2832 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
2840 TRACE(
"EnumContext->Index: %lu\n", EnumContext->
Index);
2841 TRACE(
"EnumContext->Count: %lu\n", EnumContext->
Count);
2843 if (EnumContext->
Index >= EnumContext->
Count)
2851 TRACE(
"Calling SamEnumerateUsersInDomain\n");
2857 &EnumContext->
Count);
2859 TRACE(
"SamEnumerateUsersInDomain returned (Status %08lx)\n",
Status);
2862 ERR(
"SamEnumerateUsersInDomain failed (Status %08lx)\n",
Status);
2878 TRACE(
"EnumContext: %lu\n", EnumContext);
2879 TRACE(
"EnumContext->Count: %lu\n", EnumContext->
Count);
2880 TRACE(
"EnumContext->Buffer: %p\n", EnumContext->
Buffer);
2897 ERR(
"SamOpenUser failed (Status %08lx)\n",
Status);
2910 ERR(
"BuildUserInfoBuffer failed (ApiStatus %lu)\n", ApiStatus);
2917 EnumContext->
Index++;
2926 if (EnumContext !=
NULL)
2927 *totalentries = EnumContext->
Count;
2931 if (EnumContext !=
NULL)
2950 for (
i = 0;
i < EnumContext->
Count;
i++)
2963 if (UserHandle !=
NULL)
2966 if (resume_handle !=
NULL)
2967 *resume_handle = EnumContext ? EnumContext->
EnumHandle : 0;
2971 TRACE(
"return %lu\n", ApiStatus);
3008 if (servername !=
NULL)
3020 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
3030 ERR(
"GetAccountDomainSid failed (Status %08lx)\n",
Status);
3039 &AccountDomainHandle);
3042 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
3055 ERR(
"SamLookupNamesInDomain(%wZ) failed (Status %08lx)\n", &UserName,
Status);
3066 ERR(
"Account is not a User!\n");
3078 ERR(
"SamOpenUser failed (Status %08lx)\n",
Status);
3089 ERR(
"SamGetGroupsForUser failed (Status %08lx)\n",
Status);
3095 if (GroupCount == 0)
3104 if (GroupMembership !=
NULL)
3107 if (UserHandle !=
NULL)
3110 if (RelativeIds !=
NULL)
3119 if (AccountDomainHandle !=
NULL)
3122 if (ServerHandle !=
NULL)
3170 if (servername !=
NULL)
3182 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
3191 ERR(
"GetBuiltinDomainSid failed (Status %08lx)\n",
Status);
3204 &BuiltinDomainHandle);
3207 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
3217 ERR(
"GetAccountDomainSid failed (Status %08lx)\n",
Status);
3226 &AccountDomainHandle);
3229 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
3242 ERR(
"SamLookupNamesInDomain(%wZ) failed (Status %08lx)\n", &UserName,
Status);
3253 ERR(
"No user found!\n");
3258 TRACE(
"RID: %lu\n", RelativeIds[0]);
3271 ERR(
"SamOpenUser failed (Status %08lx)\n",
Status);
3284 ERR(
"BuildUserInfoBuffer failed (ApiStatus %08lu)\n", ApiStatus);
3289 if (UserHandle !=
NULL)
3292 if (RelativeIds !=
NULL)
3298 if (AccountDomainHandle !=
NULL)
3304 if (BuiltinDomainHandle !=
NULL)
3310 if (ServerHandle !=
NULL)
3342 ULONG BuiltinMemberCount = 0;
3343 ULONG AccountMemberCount = 0;
3357 TRACE(
"(%s, %s, %d, %08x, %p %d, %p, %p) stub!\n",
3359 prefmaxlen, entriesread, totalentries);
3369 WARN(
"The flag LG_INCLUDE_INDIRECT is not supported yet!\n");
3372 if (servername !=
NULL)
3384 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
3392 &BuiltinDomainHandle);
3395 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
3405 ERR(
"GetAccountDomainSid failed (Status %08lx)\n",
Status);
3414 &AccountDomainHandle);
3417 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
3430 ERR(
"SamLookupNamesInDomain(%wZ) failed (Status %08lx)\n", &UserName,
Status);
3441 ERR(
"Account is not a User!\n");
3452 ERR(
"BuildSidFromSidAndRid failed!\n");
3460 &BuiltinMemberCount,
3464 ERR(
"SamGetAliasMembership failed (Status %08lx)\n",
Status);
3469 if (BuiltinMemberCount > 0)
3479 ERR(
"SamLookupIdsInDomain failed (Status %08lx)\n",
Status);
3489 &AccountMemberCount,
3493 ERR(
"SamGetAliasMembership failed (Status %08lx)\n",
Status);
3498 if (AccountMemberCount > 0)
3508 ERR(
"SamLookupIdsInDomain failed (Status %08lx)\n",
Status);
3517 for (
i = 0;
i < BuiltinMemberCount;
i++)
3519 if (BuiltinNames[
i].
Length > 0)
3526 for (
i = 0;
i < AccountMemberCount;
i++)
3528 if (AccountNames[
i].
Length > 0)
3552 for (
i = 0;
i < BuiltinMemberCount;
i++)
3554 if (BuiltinNames[
i].
Length > 0)
3566 for (
i = 0;
i < AccountMemberCount;
i++)
3568 if (AccountNames[
i].
Length > 0)
3581 if (AccountNames !=
NULL)
3584 if (BuiltinNames !=
NULL)
3587 if (AccountAliases !=
NULL)
3590 if (BuiltinAliases !=
NULL)
3593 if (RelativeIds !=
NULL)
3599 if (UserSid !=
NULL)
3605 if (AccountDomainHandle !=
NULL)
3608 if (BuiltinDomainHandle !=
NULL)
3611 if (ServerHandle !=
NULL)
3621 *entriesread =
Count;
3622 *totalentries =
Count;
3686 if (servername !=
NULL)
3696 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
3706 ERR(
"GetAccountDomainSid failed (Status %08lx)\n",
Status);
3741 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
3752 (
PVOID*)&PasswordInfo);
3761 (
PVOID*)&LogoffInfo);
3775 (
PVOID*)&ServerRoleInfo);
3784 (
PVOID*)&ReplicationInfo);
3792 ReplicationInfo->ReplicaSourceNodeName.Length +
sizeof(
WCHAR);
3807 NameInfo->DomainName.Length +
sizeof(
WCHAR) +
3815 (
PVOID*)&LockoutInfo);
3826 TRACE(
"Invalid level %d is specified\n",
level);
3836 WARN(
"NetApiBufferAllocate() failed\n");
3907 if (LockoutInfo !=
NULL)
3910 if (NameInfo !=
NULL)
3913 if (ReplicationInfo !=
NULL)
3916 if (ServerRoleInfo !=
NULL)
3919 if (LogoffInfo !=
NULL)
3922 if (PasswordInfo !=
NULL)
3925 if (DomainSid !=
NULL)
3928 if (DomainHandle !=
NULL)
3931 if (ServerHandle !=
NULL)
3964 FIXME(
"(%s %s %lu %p %lu)\n",
3989 TRACE(
"(%s %s %lu %p %p)\n",
3992 if (parm_err !=
NULL)
4030 if (servername !=
NULL)
4042 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
4049 (servername !=
NULL) ? &ServerName :
NULL,
4051 &AccountDomainHandle);
4054 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
4066 ERR(
"OpenUserByName(%wZ) failed (ApiStatus %lu)\n", &UserName, ApiStatus);
4077 ERR(
"SetUserInfo failed (Status %lu)\n", ApiStatus);
4081 if (UserHandle !=
NULL)
4084 if (AccountDomainHandle !=
NULL)
4087 if (ServerHandle !=
NULL)
static ULONG GetAccountControl(ULONG Flags)
#define USER_INTERDOMAIN_TRUST_ACCOUNT
DWORD usri4_password_expired
NET_API_STATUS WINAPI NetApiBufferAllocate(DWORD ByteCount, LPVOID *Buffer)
LPWSTR usri11_usr_comment
LPWSTR usri1014_workstations
#define USER_ALL_PARAMETERS
#define ERROR_INVALID_PARAMETER
NTSTATUS NTAPI SamCloseHandle(IN SAM_HANDLE SamHandle)
#define USER_PASSWORD_EXPIRED
NTSTATUS NTAPI SamGetGroupsForUser(IN SAM_HANDLE UserHandle, OUT PGROUP_MEMBERSHIP *Groups, OUT PULONG MembershipCount)
#define SAM_SERVER_CONNECT
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
struct _USER_INFO_1006 * PUSER_INFO_1006
#define USER_ALL_ACCOUNTEXPIRES
#define USER_UNITS_PER_WEEK_PARMNUM
DWORD usri11_units_per_week
#define MSV1_0_PACKAGE_NAME
struct _USER_INFO_4 * PUSER_INFO_4
_In_ ULONG _In_ ULONG _In_ ULONG Length
LPWSTR usri2_logon_server
#define USER_PASSWORD_NOT_REQUIRED
struct _MSV1_0_CHANGEPASSWORD_REQUEST MSV1_0_CHANGEPASSWORD_REQUEST
LPWSTR usri11_logon_server
CRITICAL_SECTION g_EnumContextListLock
static unsigned int bufptr
static NET_API_STATUS BuildUserInfoBuffer(_In_ SAM_HANDLE BuiltinDomainHandle, _In_ SAM_HANDLE UserHandle, _In_ PSID AccountDomainSid, _In_ ULONG RelativeId, _In_ DWORD level, _Out_ LPVOID *Buffer)
#define DOMAIN_GET_ALIAS_MEMBERSHIP
#define UF_INTERDOMAIN_TRUST_ACCOUNT
LARGE_INTEGER LockoutDuration
struct _USER_MODALS_INFO_1 USER_MODALS_INFO_1
struct _USER_INFO_1009 * PUSER_INFO_1009
struct _USER_INFO_11 * PUSER_INFO_11
SAM_HANDLE BuiltinDomainHandle
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
struct _USER_INFO_20 USER_INFO_20
NTSYSAPI VOID NTAPI RtlSecondsSince1970ToTime(_In_ ULONG SecondsSince1970, _Out_ PLARGE_INTEGER Time)
static NET_API_STATUS OpenUserByName(SAM_HANDLE DomainHandle, PUNICODE_STRING UserName, ULONG DesiredAccess, PSAM_HANDLE UserHandle)
#define DOMAIN_ALIAS_RID_ACCOUNT_OPS
struct _USER_MODALS_INFO_1 * PUSER_MODALS_INFO_1
DOMAIN_SERVER_ROLE DomainServerRole
DWORD usrmod3_lockout_threshold
NTSTATUS NTAPI SamOpenDomain(IN SAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN PSID DomainId, OUT PSAM_HANDLE DomainHandle)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
#define USER_TEMP_DUPLICATE_ACCOUNT
#define ERROR_NONE_MAPPED
LPWSTR usri22_workstations
static SID_IDENTIFIER_AUTHORITY WorldAuthority
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
struct _USER_INFO_10 USER_INFO_10
#define UF_TEMP_DUPLICATE_ACCOUNT
DWORD usri22_country_code
PSAM_RID_ENUMERATION Buffer
struct _USER_INFO_10 * PUSER_INFO_10
#define ERROR_NOT_ENOUGH_MEMORY
DWORD usrmod3_lockout_duration
IN PVOID IN PVOID IN USHORT IN USHORT Size
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
#define USER_ALL_LOGONHOURS
NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL, LPVOID, DWORD, ACL_INFORMATION_CLASS)
NTSTATUS NTAPI SamQueryInformationDomain(IN SAM_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, OUT PVOID *Buffer)
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
NTSYSAPI NTSTATUS NTAPI RtlGetAce(PACL Acl, ULONG AceIndex, PVOID *Ace)
LPWSTR usri1011_full_name
struct _USER_INFO_4 USER_INFO_4
#define USER_HOME_DIRECTORY_REQUIRED
NTSTATUS NTAPI SamEnumerateUsersInDomain(IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, IN ULONG UserAccountControl, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
PBYTE usri1020_logon_hours
#define NERR_GroupNotFound
LPWSTR usri4_logon_server
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define InsertTailList(ListHead, Entry)
struct _USER_INFO_1014 * PUSER_INFO_1014
static DWORD GetPasswordAge(IN PLARGE_INTEGER PasswordLastSet)
NTSTATUS OpenAccountDomain(IN SAM_HANDLE ServerHandle, IN PUNICODE_STRING ServerName, IN ULONG DesiredAccess, OUT PSAM_HANDLE DomainHandle)
DWORD usri11_bad_pw_count
static PENUM_CONTEXT LookupEnumContext(SAM_ENUMERATE_HANDLE EnumerationHandle)
NTSYSAPI NTSTATUS NTAPI RtlGetDaclSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PBOOLEAN DaclPresent, _Out_ PACL *Dacl, _Out_ PBOOLEAN DaclDefaulted)
#define STATUS_NONE_MAPPED
#define USER_ALL_USERNAME
struct _USER_INFO_1007 * PUSER_INFO_1007
#define USER_ACCOUNT_DISABLED
LPWSTR usri3_home_dir_drive
DWORD usrmod0_min_passwd_len
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
static ULONG DeltaTimeToSeconds(LARGE_INTEGER DeltaTime)
struct _USER_MODALS_INFO_3 USER_MODALS_INFO_3
#define NERR_InternalError
struct _USER_INFO_1012 * PUSER_INFO_1012
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
DWORD usri1024_country_code
static NET_API_STATUS SetUserInfo(SAM_HANDLE UserHandle, LPBYTE UserInfo, DWORD Level, PDWORD parm_err)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define USER_MAXSTORAGE_UNLIMITED
#define UF_PASSWD_CANT_CHANGE
NTSYSAPI NTSTATUS NTAPI RtlInitializeSid(IN OUT PSID Sid, IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount)
static NET_API_STATUS GetUserDacl(IN SAM_HANDLE UserHandle, OUT PACL *Dacl)
VOID NTAPI ProtocolStatus(NDIS_HANDLE BindingContext, NDIS_STATUS GenerelStatus, PVOID StatusBuffer, UINT StatusBufferSize)
Called by NDIS when the underlying driver has changed state.
#define USER_READ_GENERAL
#define USER_ALL_FULLNAME
#define ERROR_ACCESS_DENIED
DWORD usri2_units_per_week
DWORD usri11_password_age
DWORD usrmod0_max_passwd_age
NET_API_STATUS WINAPI NetUserModalsGet(LPCWSTR servername, DWORD level, LPBYTE *bufptr)
struct _USER_INFO_1 USER_INFO_1
DWORD usri3_primary_group_id
NTSTATUS NTAPI SamCreateUser2InDomain(IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ULONG AccountType, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE UserHandle, OUT PULONG GrantedAccess, OUT PULONG RelativeId)
struct _USER_INFO_1011 * PUSER_INFO_1011
LPWSTR usri4_workstations
static NET_API_STATUS GetUserPrivileges(_In_ SAM_HANDLE BuiltinDomainHandle, _In_ SAM_HANDLE UserHandle, _In_ PSID AccountDomainSid, _In_ ULONG RelativeId, _Out_ PDWORD Priv, _Out_ PDWORD AuthFlags)
NTSTATUS NTAPI SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PULONG RelativeIds, OUT PUNICODE_STRING *Names, OUT PSID_NAME_USE *Use OPTIONAL)
struct _USER_INFO_20 * PUSER_INFO_20
struct _USER_INFO_2 * PUSER_INFO_2
NET_API_STATUS WINAPI NetUserAdd(LPCWSTR servername, DWORD level, LPBYTE bufptr, LPDWORD parm_err)
NTSTATUS NTAPI SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PUNICODE_STRING Names, OUT PULONG *RelativeIds, OUT PSID_NAME_USE *Use)
LARGE_INTEGER MinPasswordAge
DWORD usri4_primary_group_id
#define SID_MAX_SUB_AUTHORITIES
struct _USER_INFO_1052 * PUSER_INFO_1052
struct _USER_INFO_3 USER_INFO_3
LPWSTR usri1009_script_path
DWORD usri1017_acct_expires
#define SAM_SERVER_LOOKUP_DOMAIN
SAM_ENUMERATE_HANDLE EnumerationContext
static VOID ChangeUserDacl(IN PACL Dacl, IN ULONG Flags)
struct _USER_INFO_1053 * PUSER_INFO_1053
#define LG_INCLUDE_INDIRECT
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
USHORT PasswordHistoryLength
#define USER_ALL_USERACCOUNTCONTROL
#define UF_PASSWD_NOTREQD
NTSTATUS NTAPI SamSetInformationUser(IN SAM_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PVOID Buffer)
static VOID FreeEnumContext(PENUM_CONTEXT EnumContext)
NET_API_STATUS WINAPI NetUserGetInfo(LPCWSTR servername, LPCWSTR username, DWORD level, LPBYTE *bufptr)
struct _USER_INFO_1 * PUSER_INFO_1
static NTSTATUS GetAccountDomainSid(_In_ PRPC_SID *Sid)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
UNICODE_STRING DomainName
struct _USER_INFO_11 USER_INFO_11
struct _USER_INFO_1051 * PUSER_INFO_1051
struct _USER_MODALS_INFO_2 * PUSER_MODALS_INFO_2
DWORD usri4_units_per_week
struct _LIST_ENTRY * Flink
LPWSTR usri11_workstations
NET_API_STATUS WINAPI NetUserGetLocalGroups(LPCWSTR servername, LPCWSTR username, DWORD level, DWORD flags, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries)
enum _SID_NAME_USE * PSID_NAME_USE
#define USER_ALL_PRIMARYGROUPID
#define USER_ALL_HOMEDIRECTORY
NTSTATUS NTAPI SamDeleteUser(IN SAM_HANDLE UserHandle)
DWORD usri1020_units_per_week
_Must_inspect_result_ _In_ ULONG Flags
DWORD usri22_acct_expires
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
struct _USER_INFO_23 * PUSER_INFO_23
LPWSTR usri2_workstations
#define NT_SUCCESS(StatCode)
struct _ENUM_CONTEXT * PENUM_CONTEXT
#define USER_READ_ACCOUNT
struct _USER_INFO_1008 * PUSER_INFO_1008
#define SECURITY_WORLD_SID_AUTHORITY
NET_API_STATUS WINAPI NetUserModalsSet(IN LPCWSTR servername, IN DWORD level, IN LPBYTE buf, OUT LPDWORD parm_err)
LPWSTR usri3_logon_server
_In_ WDFCOLLECTION _In_ ULONG Index
struct _USER_MODALS_INFO_2 USER_MODALS_INFO_2
struct _USER_INFO_22 * PUSER_INFO_22
SAM_HANDLE AccountDomainHandle
struct _USER_INFO_1025 * PUSER_INFO_1025
LARGE_INTEGER MaxPasswordAge
#define DOMAIN_READ_PASSWORD_PARAMETERS
#define UF_SERVER_TRUST_ACCOUNT
struct _USER_INFO_1017 * PUSER_INFO_1017
static VOID FreeUserInfo(PUSER_ALL_INFORMATION UserInfo)
#define DOMAIN_ALIAS_RID_SYSTEM_OPS
static NET_API_STATUS AllocateEnumContext(PENUM_CONTEXT *AllocatedEnumContext)
NET_API_STATUS WINAPI NetUserSetGroups(LPCWSTR servername, LPCWSTR username, DWORD level, LPBYTE buf, DWORD num_entries)
#define ACCESS_ALLOWED_ACE_TYPE
#define USER_NORMAL_ACCOUNT
NET_API_STATUS WINAPI NetUserGetGroups(LPCWSTR servername, LPCWSTR username, DWORD level, LPBYTE *bufptr, DWORD prefixmaxlen, LPDWORD entriesread, LPDWORD totalentries)
#define DOMAIN_CREATE_USER
#define USER_ALL_ADMINCOMMENT