270 ERR(
"GetAccountDomainSid() failed (Status 0x%08lx)\n",
Status);
278 TRACE(
"SamIConnect() failed (Status 0x%08lx)\n",
Status);
286 ERR(
"SamrOpenDomain failed (Status %08lx)\n",
Status);
290 Names[0].Length = UserName->Length;
291 Names[0].MaximumLength = UserName->MaximumLength;
292 Names[0].Buffer = UserName->Buffer;
298 ERR(
"SamrLookupNamesInDomain failed (Status %08lx)\n",
Status);
307 ERR(
"Account is not a user account!\n");
320 ERR(
"SamrOpenUser failed (Status %08lx)\n",
Status);
327 ERR(
"SamrQueryInformationUser failed (Status %08lx)\n",
Status);
339 ERR(
"MsvpCheckPassword failed (Status %08lx)\n",
Status);
350 ERR(
"Account disabled!\n");
359 ERR(
"Account locked!\n");
368 ERR(
"Account expired!\n");
377 ERR(
"Password expired!\n");
390 ERR(
"Invalid logon hours!\n");
399 ERR(
"Invalid workstation!\n");
408 *UserHandlePtr = UserHandle;
410 *UserInfoPtr = UserInfo;
417 if (UserHandle !=
NULL)
427 if (DomainHandle !=
NULL)
430 if (ServerHandle !=
NULL)
#define SAM_SERVER_CONNECT
#define USER_PASSWORD_NOT_REQUIRED
NTSTATUS __stdcall SamrOpenDomain(SAMPR_HANDLE ServerHandle, ACCESS_MASK DesiredAccess, PRPC_SID DomainId, SAMPR_HANDLE *DomainHandle)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSTATUS NTAPI SamrLookupNamesInDomain(IN SAMPR_HANDLE DomainHandle, IN ULONG Count, IN RPC_UNICODE_STRING Names[], OUT PSAMPR_ULONG_ARRAY RelativeIds, OUT PSAMPR_ULONG_ARRAY Use)
#define STATUS_ACCOUNT_LOCKED_OUT
#define STATUS_ACCOUNT_EXPIRED
SAMPR_USER_ALL_INFORMATION All
#define STATUS_INVALID_LOGON_HOURS
#define USER_ACCOUNT_DISABLED
#define STATUS_ACCOUNT_RESTRICTION
NTSTATUS NTAPI SamIConnect(PSAMPR_SERVER_NAME ServerName, SAMPR_HANDLE *ServerHandle, ACCESS_MASK DesiredAccess, BOOLEAN Trusted)
#define USER_READ_GENERAL
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE _Out_ PQUOTA_LIMITS _Out_ PNTSTATUS SubStatus
#define DOMAIN_USER_RID_ADMIN
static bool MsvpCheckWorkstations(_In_ PRPC_UNICODE_STRING WorkStations, _In_ PWSTR ComputerName)
#define SAM_SERVER_LOOKUP_DOMAIN
static NTSTATUS MsvpCheckPassword(_In_ PLSA_SAM_PWD_DATA UserPwdData, _In_ PSAMPR_USER_INFO_BUFFER UserInfo)
static NTSTATUS GetAccountDomainSid(_In_ PRPC_SID *Sid)
#define STATUS_NO_SUCH_USER
#define STATUS_ACCOUNT_DISABLED
#define STATUS_PASSWORD_EXPIRED
#define NT_SUCCESS(StatCode)
#define USER_READ_ACCOUNT
#define USER_ACCOUNT_AUTO_LOCKED
VOID NTAPI SamIFree_SAMPR_USER_INFO_BUFFER(PSAMPR_USER_INFO_BUFFER Ptr, USER_INFORMATION_CLASS InformationClass)
VOID NTAPI SamIFree_SAMPR_ULONG_ARRAY(PSAMPR_ULONG_ARRAY Ptr)
#define STATUS_INVALID_WORKSTATION
#define STATUS_PASSWORD_MUST_CHANGE
static bool MsvpCheckLogonHours(_In_ PSAMPR_LOGON_HOURS LogonHours, _In_ LARGE_INTEGER LogonTime)
NTSTATUS __stdcall SamrCloseHandle(SAMPR_HANDLE *SamHandle)
NTSTATUS NTAPI SamrOpenUser(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT SAMPR_HANDLE *UserHandle)
#define USER_READ_PREFERENCES
NTSTATUS NTAPI NtQuerySystemTime(OUT PLARGE_INTEGER SystemTime)
NTSTATUS NTAPI SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, OUT PSAMPR_USER_INFO_BUFFER *Buffer)
unsigned long long UINT64