54 CurrentEntry = CurrentEntry->
Flink;
79 if (UIntPtrToUShort(
wcslen(ComputerName), &ComputerNameLength) !=
S_OK)
85 UserInfo->All.FullName.Length +
sizeof(
WCHAR) +
86 UserInfo->All.HomeDirectory.Length +
sizeof(
WCHAR) +
87 UserInfo->All.HomeDirectoryDrive.Length +
sizeof(
WCHAR) +
88 UserInfo->All.ScriptPath.Length +
sizeof(
WCHAR) +
89 UserInfo->All.ProfilePath.Length +
sizeof(
WCHAR) +
90 ((ComputerNameLength + 3) *
sizeof(
WCHAR));
93 if (LocalBuffer ==
NULL)
95 TRACE(
"Failed to allocate the local buffer!\n");
105 TRACE(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
109 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
114 LocalBuffer->
LogonCount = UserInfo->All.LogonCount;
139 UserInfo->All.ScriptPath.Buffer,
140 UserInfo->All.ScriptPath.Length);
148 UserInfo->All.HomeDirectory.Buffer,
149 UserInfo->All.HomeDirectory.Length);
157 UserInfo->All.FullName.Buffer,
158 UserInfo->All.FullName.Length);
167 UserInfo->All.ProfilePath.Buffer,
168 UserInfo->All.ProfilePath.Length);
176 UserInfo->All.HomeDirectoryDrive.Buffer,
177 UserInfo->All.HomeDirectoryDrive.Length);
195 TRACE(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
203 if (LocalBuffer !=
NULL)
208 if (ClientBaseAddress !=
NULL)
244 ERR(
"RtlAppendUnicodeToString failed 0x%lx\n",
Status);
250 ERR(
"RtlAppendUnicodeStringToString failed 0x%lx\n",
Status);
259 TRACE(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
263 TRACE(
"ClientBaseAddress: %p\n",
Buffer.ClientBaseAddress);
275 &LogonPwdData->UserSessionKey,
283 &LogonPwdData->LanmanSessionKey,
293 ERR(
"NtlmStructWriteUCS failed.\n");
308 TRACE(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
357 if (User->User.Sid ==
NULL)
359 ERR(
"Could not create the user SID\n");
363 User->User.Attributes = 0;
379 ERR(
"Could not create the primary group SID\n");
396 DWORD GroupCount = 0;
497 WARN(
"Failed to allocate the local buffer!\n");
510 WARN(
"BuildTokenUser() failed (Status 0x%08lx)\n",
Status);
519 WARN(
"BuildTokenPrimaryGroup() failed (Status 0x%08lx)\n",
Status);
529 WARN(
"BuildTokenGroups() failed (Status 0x%08lx)\n",
Status);
533 *TokenInformation =
Buffer;
545 for (
i = 0;
i <
Buffer->Groups->GroupCount;
i++)
554 if (
Buffer->PrimaryGroup.PrimaryGroup !=
NULL)
595 CHAR LmPwdBuffer[15];
606 TRACE(
"MsvpChangePassword()\n");
612 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
661 TRACE(
"SamIConnect() failed (Status 0x%08lx)\n",
Status);
671 TRACE(
"SamrLookupDomainInSamServer failed (Status %08lx)\n",
Status);
682 TRACE(
"SamrOpenDomain failed (Status %08lx)\n",
Status);
698 TRACE(
"SamrLookupNamesInDomain failed (Status %08lx)\n",
Status);
706 TRACE(
"Account is not a user account!\n");
718 TRACE(
"SamrOpenUser failed (Status %08lx)\n",
Status);
728 TRACE(
"SystemFunction007 failed (Status 0x%08lx)\n",
Status);
737 TRACE(
"SystemFunction007 failed (Status 0x%08lx)\n",
Status);
742 LmPwdString.Length = 15;
743 LmPwdString.MaximumLength = 15;
744 LmPwdString.Buffer = LmPwdBuffer;
745 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
754 (
LPSTR)&OldLmPassword);
757 OldLmPasswordPresent =
TRUE;
762 LmPwdString.Length = 15;
763 LmPwdString.MaximumLength = 15;
764 LmPwdString.Buffer = LmPwdBuffer;
765 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
774 (
LPSTR)&NewLmPassword);
777 NewLmPasswordPresent =
TRUE;
782 if (OldLmPasswordPresent && NewLmPasswordPresent)
786 (
const BYTE *)&NewLmPassword,
787 (
LPBYTE)&OldLmEncryptedWithNewLm);
790 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
796 (
const BYTE *)&OldLmPassword,
797 (
LPBYTE)&NewLmEncryptedWithOldLm);
800 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
804 pOldLmEncryptedWithNewLm = &OldLmEncryptedWithNewLm;
805 pNewLmEncryptedWithOldLm = &NewLmEncryptedWithOldLm;
810 (
const BYTE *)&NewNtPassword,
811 (
LPBYTE)&OldNtEncryptedWithNewNt);
814 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
820 (
const BYTE *)&OldNtPassword,
821 (
LPBYTE)&NewNtEncryptedWithOldNt);
824 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
830 OldLmPasswordPresent && NewLmPasswordPresent,
831 pOldLmEncryptedWithNewLm,
832 pNewLmEncryptedWithOldLm,
834 &OldNtEncryptedWithNewNt,
835 &NewNtEncryptedWithOldNt,
842 TRACE(
"SamrChangePasswordUser failed (Status %08lx)\n",
Status);
847 if (UserHandle !=
NULL)
853 if (DomainHandle !=
NULL)
856 if (DomainSid !=
NULL)
859 if (ServerHandle !=
NULL)
882 ULONG LogonCount = 0;
887 TRACE(
"MsvpEnumerateUsers()\n");
891 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
908 CurrentEntry = CurrentEntry->
Flink;
911 TRACE(
"LogonCount %lu\n", LogonCount);
914 (LogonCount *
sizeof(
LUID)) +
915 (LogonCount *
sizeof(
ULONG));
918 if (LocalBuffer ==
NULL)
920 ERR(
"Failed to allocate the local buffer!\n");
930 ERR(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
934 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
961 CurrentEntry = CurrentEntry->
Flink;
970 ERR(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
974 *ProtocolReturnBuffer = ClientBaseAddress;
981 if (LocalBuffer !=
NULL)
986 if (ClientBaseAddress !=
NULL)
1014 TRACE(
"MsvpGetUserInfo()\n");
1018 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
1029 if (LogonEntry ==
NULL)
1046 if (LocalBuffer ==
NULL)
1048 ERR(
"Failed to allocate the local buffer!\n");
1055 &ClientBaseAddress);
1058 ERR(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
1062 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
1101 ERR(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
1105 *ProtocolReturnBuffer = ClientBaseAddress;
1112 if (LocalBuffer !=
NULL)
1117 if (ClientBaseAddress !=
NULL)
1132 IN PVOID ProtocolSubmitBuffer,
1142 TRACE(
"LsaApCallPackage()\n");
1149 *ProtocolReturnBuffer =
NULL;
1150 *ReturnBufferLength = 0;
1152 switch (MessageType)
1161 ProtocolSubmitBuffer,
1164 ProtocolReturnBuffer,
1171 ProtocolSubmitBuffer,
1174 ProtocolReturnBuffer,
1185 ProtocolSubmitBuffer,
1188 ProtocolReturnBuffer,
1216 IN PVOID ProtocolSubmitBuffer,
1223 TRACE(
"LsaApCallPackagePassthrough()\n");
1234 IN PVOID ProtocolSubmitBuffer,
1244 TRACE(
"LsaApCallPackageUntrusted()\n");
1251 *ProtocolReturnBuffer =
NULL;
1252 *ReturnBufferLength = 0;
1256 ProtocolSubmitBuffer,
1259 ProtocolReturnBuffer,
1283 TRACE(
"LsaApInitializePackage(%lu %p %p %p %p)\n",
1284 AuthenticationPackageId, LsaDispatchTable,
Database,
1285 Confidentiality, AuthenticationPackageName);
1296 DispatchTable.CreateLogonSession = LsaDispatchTable->CreateLogonSession;
1297 DispatchTable.DeleteLogonSession = LsaDispatchTable->DeleteLogonSession;
1298 DispatchTable.AddCredential = LsaDispatchTable->AddCredential;
1299 DispatchTable.GetCredentials = LsaDispatchTable->GetCredentials;
1300 DispatchTable.DeleteCredential = LsaDispatchTable->DeleteCredential;
1301 DispatchTable.AllocateLsaHeap = LsaDispatchTable->AllocateLsaHeap;
1303 DispatchTable.AllocateClientBuffer = LsaDispatchTable->AllocateClientBuffer;
1304 DispatchTable.FreeClientBuffer = LsaDispatchTable->FreeClientBuffer;
1305 DispatchTable.CopyToClientBuffer = LsaDispatchTable->CopyToClientBuffer;
1306 DispatchTable.CopyFromClientBuffer = LsaDispatchTable->CopyFromClientBuffer;
1310 if (NameString ==
NULL)
1314 if (NameBuffer ==
NULL)
1324 *AuthenticationPackageName = (
PLSA_STRING)NameString;
1340 TRACE(
"LsaApLogonTerminated()\n");
1344 if (LogonEntry !=
NULL)
1390 *LogonProfile =
NULL;
1391 *LogonProfileSize = 0;
1392 *UserInfoPtr =
NULL;
1393 *AccountDomainSidPtr =
NULL;
1394 *SpecialAccount =
FALSE;
1395 LogonInfo = ProtocolSubmitBuffer;
1399 ERR(
"Invalid SubmitBufferSize %lu\n", SubmitBufferSize);
1415 LogonPwdData->IsNetwork =
TRUE;
1416 LogonPwdData->LogonInfo = LogonInfo;
1417 LogonPwdData->ComputerName = ComputerName;
1424 AccountDomainSidPtr,
1430 ERR(
"SamValidateUser failed with 0x%lx\n",
Status);
1443 ERR(
"BuildLm20LogonProfileBuffer failed with 0x%lx\n",
Status);
1448 *LogonUserRef = &LogonInfo->
UserName;
1461 IN PVOID ProtocolSubmitBuffer,
1486 DWORD ComputerNameSize;
1488 UCHAR LogonPassHash;
1492 TRACE(
"LsaApLogonUserEx2()\n");
1495 TRACE(
"ProtocolSubmitBuffer: %p\n", ProtocolSubmitBuffer);
1496 TRACE(
"SubmitBufferSize: %lu\n", SubmitBufferSize);
1499 *ProfileBufferSize = 0;
1501 *AccountName =
NULL;
1502 *AuthenticatingAuthority =
NULL;
1505 ComputerNameSize =
ARRAYSIZE(ComputerNameData);
1508 ERR(
"Failed to get Computername.\n");
1523 ERR(
"Invalid SubmitBufferSize %lu\n", SubmitBufferSize);
1602 if (LogonPassHash > 0)
1608 ErasePassword = &LogonInfo->
Password;
1614 LogonUserName = &LogonInfo->
UserName;
1629 ProtocolSubmitBuffer,
1672 TRACE(
"NtAllocateLocallyUniqueId failed (Status %08lx)\n",
Status);
1680 TRACE(
"CreateLogonSession failed (Status %08lx)\n",
Status);
1684 SessionCreated =
TRUE;
1693 TRACE(
"Logon User: %wZ %wZ %lx\n", LogonUserName, LogonDomain,
LogonId->LowPart);
1732 TRACE(
"BuildInteractiveProfileBuffer failed (Status %08lx)\n",
Status);
1751 TRACE(
"BuildTokenInformationBuffer failed (Status %08lx)\n",
Status);
1763 if ((UserHandle !=
NULL) &&
1784 if ((LogonUserName !=
NULL) &&
1785 (*AccountName !=
NULL))
1789 if ((*AccountName)->Buffer !=
NULL)
1791 (*AccountName)->MaximumLength = LogonUserName->
Length +
1799 if ((LogonDomain !=
NULL) &&
1800 (*AuthenticatingAuthority !=
NULL))
1804 if ((*AuthenticatingAuthority)->Buffer !=
NULL)
1806 (*AuthenticatingAuthority)->MaximumLength = LogonDomain->
Length +
1817 if ((*MachineName)->Buffer !=
NULL)
1820 (*MachineName)->Length = ComputerName.
Length;
1830 if (SessionCreated !=
FALSE)
1841 if (UserHandle !=
NULL)
1874 TRACE(
"SpLsaModeInitialize(0x%lx %p %p %p)\n",
1875 LsaVersion, PackageVersion, ppTables, pcTables);
1899 TRACE(
"SpUserModeInitialize(0x%lx %p %p %p)\n",
1900 LsaVersion, PackageVersion, ppTables, pcTables);
NTSTATUS __stdcall SamrOpenDomain(SAMPR_HANDLE ServerHandle, ACCESS_MASK DesiredAccess, PRPC_SID DomainId, SAMPR_HANDLE *DomainHandle)
VOID NTAPI SamIFree_SAMPR_ULONG_ARRAY(PSAMPR_ULONG_ARRAY Ptr)
NTSTATUS __stdcall SamrCloseHandle(SAMPR_HANDLE *SamHandle)
enum _LSA_TOKEN_INFORMATION_TYPE * PLSA_TOKEN_INFORMATION_TYPE
NTSTATUS NTAPI SamIConnect(PSAMPR_SERVER_NAME ServerName, SAMPR_HANDLE *ServerHandle, ACCESS_MASK DesiredAccess, BOOLEAN Trusted)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define PtrOffset(BASE, OFFSET)
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
NTSTATUS WINAPI SystemFunction006(LPCSTR password, LPSTR hash)
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)
bool NtlmUStrWriteToStruct(_In_ PVOID DataStart, _In_ ULONG DataSize, _Out_ PUNICODE_STRING DstData, _In_ const PUNICODE_STRING SrcData, _Inout_ PBYTE *AbsoluteOffsetPtr, _In_ bool TerminateWith0)
VOID NtlmUStrFree(_In_ PUNICODE_STRING String)
bool NtlmFixupAndValidateUStr(_Inout_ PUNICODE_STRING String, _In_ ULONG_PTR FixupOffset)
NTSTATUS NtlmCopyToClientBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ ULONG BufferLength, _Inout_ PNTLM_CLIENT_BUFFER Buffer)
bool NtlmFixupAStr(_Inout_ PSTRING String, _In_ ULONG_PTR FixupOffset)
bool NtlmUStrAlloc(_Inout_ PUNICODE_STRING Dst, _In_ UINT16 SizeInBytes, _In_ UINT16 InitLength)
NTSTATUS NtlmAllocateClientBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ ULONG BufferLength, _Inout_ PNTLM_CLIENT_BUFFER Buffer)
VOID NtlmFreeClientBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ bool FreeClientBuffer, _Inout_ PNTLM_CLIENT_BUFFER Buffer)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define InitializeListHead(ListHead)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
VOID NTAPI ProtocolStatus(NDIS_HANDLE BindingContext, NDIS_STATUS GenerelStatus, PVOID StatusBuffer, UINT StatusBufferSize)
Called by NDIS when the underlying driver has changed state.
#define memcpy(s1, s2, n)
static SID_IDENTIFIER_AUTHORITY SystemAuthority
SECPKG_USER_FUNCTION_TABLE NtlmUsrFn[1]
SECPKG_FUNCTION_TABLE NtlmLsaFn[1]
static NTSTATUS BuildTokenGroups(OUT PTOKEN_GROUPS *Groups, IN PSID AccountDomainSid, IN ULONG RelativeId, IN BOOL SpecialAccount)
NTSTATUS WINAPI SpUserModeInitialize(_In_ ULONG LsaVersion, _Out_ PULONG PackageVersion, _Out_ PSECPKG_USER_FUNCTION_TABLE *ppTables, _Out_ PULONG pcTables)
static NTSTATUS MsvpGetUserInfo(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PVOID ProtocolSubmitBuffer, _In_ PVOID ClientBufferBase, _In_ ULONG SubmitBufferLength, _Out_ PVOID *ProtocolReturnBuffer, _Out_ PULONG ReturnBufferLength, _Out_ PNTSTATUS ProtocolStatus)
NTSTATUS NTAPI LsaApLogonUserEx2(IN PLSA_CLIENT_REQUEST ClientRequest, IN SECURITY_LOGON_TYPE LogonType, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferSize, OUT PVOID *ProfileBuffer, OUT PULONG ProfileBufferSize, OUT PLUID LogonId, OUT PNTSTATUS SubStatus, OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType, OUT PVOID *TokenInformation, OUT PUNICODE_STRING *AccountName, OUT PUNICODE_STRING *AuthenticatingAuthority, OUT PUNICODE_STRING *MachineName, OUT PSECPKG_PRIMARY_CRED PrimaryCredentials, OUT PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials)
VOID NTAPI LsaApLogonTerminated(_In_ PLUID LogonId)
static NTSTATUS BuildTokenPrimaryGroup(OUT PTOKEN_PRIMARY_GROUP PrimaryGroup, IN PSID AccountDomainSid, IN ULONG RelativeId)
static NTSTATUS BuildLm20LogonProfileBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PSAMPR_USER_INFO_BUFFER UserInfo, _In_ PLSA_SAM_PWD_DATA LogonPwdData, _Out_ PMSV1_0_LM20_LOGON_PROFILE *ProfileBuffer, _Out_ PULONG ProfileBufferLength)
struct _LOGON_LIST_ENTRY * PLOGON_LIST_ENTRY
NTSTATUS NTAPI LsaApInitializePackage(IN ULONG AuthenticationPackageId, IN PLSA_DISPATCH_TABLE LsaDispatchTable, IN PLSA_STRING Database OPTIONAL, IN PLSA_STRING Confidentiality OPTIONAL, OUT PLSA_STRING *AuthenticationPackageName)
struct _LOGON_LIST_ENTRY LOGON_LIST_ENTRY
NTSTATUS NTAPI LsaApCallPackagePassthrough(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
NTSTATUS NTAPI SpLsaModeInitialize(_In_ ULONG LsaVersion, _Out_ PULONG PackageVersion, _Out_ PSECPKG_FUNCTION_TABLE *ppTables, _Out_ PULONG pcTables)
NTSTATUS NTAPI LsaApCallPackage(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
static PSID AppendRidToSid(PSID SrcSid, ULONG Rid)
static NTSTATUS MsvpEnumerateUsers(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PVOID ProtocolSubmitBuffer, _In_ PVOID ClientBufferBase, _In_ ULONG SubmitBufferLength, _Out_ PVOID *ProtocolReturnBuffer, _Out_ PULONG ReturnBufferLength, _Out_ PNTSTATUS ProtocolStatus)
static NTSTATUS LsaApLogonUserEx2_Network(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PVOID ProtocolSubmitBuffer, _In_ PVOID ClientBufferBase, _In_ ULONG SubmitBufferSize, _In_ PUNICODE_STRING ComputerName, _Out_ PUNICODE_STRING *LogonUserRef, _Out_ PUNICODE_STRING *LogonDomainRef, _Inout_ PLSA_SAM_PWD_DATA LogonPwdData, _Out_ SAMPR_HANDLE *UserHandlePtr, _Out_ PSAMPR_USER_INFO_BUFFER *UserInfoPtr, _Out_ PRPC_SID *AccountDomainSidPtr, _Out_ PBOOL SpecialAccount, _Out_ PMSV1_0_LM20_LOGON_PROFILE *LogonProfile, _Out_ PULONG LogonProfileSize, _Out_ PNTSTATUS SubStatus)
static NTSTATUS BuildTokenInformationBuffer(PLSA_TOKEN_INFORMATION_V1 *TokenInformation, PRPC_SID AccountDomainSid, PSAMPR_USER_INFO_BUFFER UserInfo, BOOL SpecialAccount)
static NTSTATUS MsvpChangePassword(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
static NTSTATUS BuildInteractiveProfileBuffer(IN PLSA_CLIENT_REQUEST ClientRequest, IN PSAMPR_USER_INFO_BUFFER UserInfo, IN PWSTR ComputerName, OUT PMSV1_0_INTERACTIVE_PROFILE *ProfileBuffer, OUT PULONG ProfileBufferLength)
RTL_RESOURCE LogonListResource
NTSTATUS NTAPI LsaApCallPackageUntrusted(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
static NTSTATUS BuildTokenUser(OUT PTOKEN_USER User, IN PSID AccountDomainSid, IN ULONG RelativeId)
static PLOGON_LIST_ENTRY GetLogonByLogonId(_In_ PLUID LogonId)
VOID NTAPI SamIFree_SAMPR_USER_INFO_BUFFER(PSAMPR_USER_INFO_BUFFER Ptr, USER_INFORMATION_CLASS InformationClass)
NTSTATUS NTAPI SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PSAMPR_USER_INFO_BUFFER Buffer)
NTSTATUS NTAPI SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle, IN unsigned char LmPresent, IN PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm, IN unsigned char NtPresent, IN PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt, IN unsigned char NtCrossEncryptionPresent, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm, IN unsigned char LmCrossEncryptionPresent, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt)
NTSTATUS NTAPI SamrLookupDomainInSamServer(IN SAMPR_HANDLE ServerHandle, IN PRPC_UNICODE_STRING Name, OUT PRPC_SID *DomainId)
NTSTATUS NTAPI SamrOpenUser(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT SAMPR_HANDLE *UserHandle)
#define USER_LOGON_SUCCESS
VOID NTAPI SamIFreeVoid(PVOID Ptr)
#define FIXUP_POINTER(Pointer, Offset)
#define USER_LOGON_BAD_PASSWORD
NTSYSAPI BOOLEAN NTAPI RtlAcquireResourceShared(_In_ PRTL_RESOURCE Resource, _In_ BOOLEAN Wait)
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
NTSYSAPI ULONG NTAPI RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG _Out_writes_bytes_to_opt_ PrimaryGroupSize PSID PrimaryGroup
NTSYSAPI VOID NTAPI RtlEraseUnicodeString(_Inout_ PUNICODE_STRING String)
NTSYSAPI NTSTATUS NTAPI RtlValidateUnicodeString(_In_ ULONG Flags, _In_ PCUNICODE_STRING String)
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
NTSYSAPI VOID NTAPI RtlInitializeResource(_In_ PRTL_RESOURCE Resource)
NTSYSAPI BOOLEAN NTAPI RtlAcquireResourceExclusive(_In_ PRTL_RESOURCE Resource, _In_ BOOLEAN Wait)
NTSYSAPI VOID NTAPI RtlReleaseResource(_In_ PRTL_RESOURCE Resource)
#define SE_GROUP_MANDATORY
#define SE_GROUP_ENABLED_BY_DEFAULT
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE LogonType
_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
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID * ProfileBuffer
_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 ProfileBufferLength
_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 LogonId
NTSYSAPI NTSTATUS NTAPI RtlAllocateAndInitializeSid(IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount, IN ULONG SubAuthority0, IN ULONG SubAuthority1, IN ULONG SubAuthority2, IN ULONG SubAuthority3, IN ULONG SubAuthority4, IN ULONG SubAuthority5, IN ULONG SubAuthority6, IN ULONG SubAuthority7, OUT PSID *Sid)
NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid(IN PSID Sid)
struct _MSV1_0_ENUMUSERS_RESPONSE MSV1_0_ENUMUSERS_RESPONSE
struct _MSV1_0_GETUSERINFO_RESPONSE MSV1_0_GETUSERINFO_RESPONSE
struct _MSV1_0_GETUSERINFO_REQUEST * PMSV1_0_GETUSERINFO_REQUEST
NTSTATUS NTAPI NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
#define SAM_SERVER_LOOKUP_DOMAIN
@ UserInternal2Information
#define SAM_SERVER_CONNECT
#define USER_CHANGE_PASSWORD
struct _MSV1_0_CHANGEPASSWORD_REQUEST * PMSV1_0_CHANGEPASSWORD_REQUEST
struct _MSV1_0_INTERACTIVE_PROFILE * PMSV1_0_INTERACTIVE_PROFILE
@ MsV1_0ChangeCachedPassword
@ MsV1_0GenericPassthrough
@ MsV1_0Lm20GetChallengeResponse
@ MsV1_0Lm20ChallengeRequest
#define MSV1_0_USER_SESSION_KEY_LENGTH
#define MSV1_0_RETURN_PROFILE_PATH
struct _MSV1_0_LM20_LOGON_PROFILE MSV1_0_LM20_LOGON_PROFILE
struct _LSA_STRING * PLSA_STRING
struct _MSV1_0_INTERACTIVE_PROFILE MSV1_0_INTERACTIVE_PROFILE
#define MSV1_0_PACKAGE_NAME
enum _SECURITY_LOGON_TYPE SECURITY_LOGON_TYPE
enum _MSV1_0_PROTOCOL_MESSAGE_TYPE * PMSV1_0_PROTOCOL_MESSAGE_TYPE
@ MsV1_0InteractiveProfile
struct _MSV1_0_LM20_LOGON_PROFILE * PMSV1_0_LM20_LOGON_PROFILE
#define MSV1_0_LANMAN_SESSION_KEY_LENGTH
struct _MSV1_0_INTERACTIVE_LOGON * PMSV1_0_INTERACTIVE_LOGON
enum _MSV1_0_PROTOCOL_MESSAGE_TYPE MSV1_0_PROTOCOL_MESSAGE_TYPE
#define LOGON_USED_LM_PASSWORD
@ MsV1_0WorkstationUnlockLogon
#define SECPKG_INTERFACE_VERSION
#define STATUS_INTERNAL_ERROR
#define STATUS_WRONG_PASSWORD
#define STATUS_BAD_VALIDATION_CLASS
#define STATUS_NO_SUCH_USER
#define STATUS_LOGON_FAILURE
#define STATUS_NAME_TOO_LONG
NTSTATUS SamValidateUser(_In_ SECURITY_LOGON_TYPE LogonType, _In_ PUNICODE_STRING LogonUserName, _In_ PUNICODE_STRING LogonDomain, _In_ PLSA_SAM_PWD_DATA LogonPwdData, _In_ PUNICODE_STRING ComputerName, _Out_ PBOOL SpecialAccount, _Out_ PRPC_SID *AccountDomainSidPtr, _Out_ SAMPR_HANDLE *UserHandlePtr, _Out_ PSAMPR_USER_INFO_BUFFER *UserInfoPtr, _Out_ PNTSTATUS SubStatus)
Validates a user by checking if it exists in the sam database. Some other checks are done further.
VOID NTAPI RtlRunDecodeUnicodeString(IN UCHAR Hash, IN OUT PUNICODE_STRING String)
_In_ DWORD _Out_ PDWORD _In_opt_ PCSTR MachineName
PULONG MinorVersion OPTIONAL
struct _LIST_ENTRY * Flink
SECURITY_LOGON_TYPE LogonType
UNICODE_STRING LogonServer
UNICODE_STRING LogonDomainName
PUNICODE_STRING ComputerName
UNICODE_STRING AccountName
UNICODE_STRING NewPassword
UNICODE_STRING OldPassword
UNICODE_STRING DomainName
ULONG NumberOfLoggedOnUsers
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
UNICODE_STRING LogonServer
SECURITY_LOGON_TYPE LogonType
UNICODE_STRING LogonDomainName
MSV1_0_LOGON_SUBMIT_TYPE MessageType
UNICODE_STRING LogonDomainName
MSV1_0_PROFILE_BUFFER_TYPE MessageType
LARGE_INTEGER KickOffTime
LARGE_INTEGER PasswordMustChange
UNICODE_STRING LogonScript
LARGE_INTEGER PasswordCanChange
LARGE_INTEGER PasswordLastSet
UNICODE_STRING ProfilePath
UNICODE_STRING LogonServer
UNICODE_STRING HomeDirectory
UNICODE_STRING HomeDirectoryDrive
MSV1_0_PROFILE_BUFFER_TYPE MessageType
UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]
UNICODE_STRING LogonServer
UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]
UNICODE_STRING LogonDomainName
UNICODE_STRING UserParameters
LARGE_INTEGER KickOffTime
STRING CaseInsensitiveChallengeResponse
UNICODE_STRING LogonDomainName
UNICODE_STRING Workstation
STRING CaseSensitiveChallengeResponse
NTSTATUS WINAPI SystemFunction012(const BYTE *in, const BYTE *key, LPBYTE out)
NTSTATUS WINAPI SystemFunction007(const UNICODE_STRING *string, LPBYTE hash)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
SAMPR_USER_ALL_INFORMATION All
SAMPR_USER_INTERNAL2_INFORMATION Internal2
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
#define MAX_COMPUTERNAME_LENGTH
#define ERROR_INTERNAL_ERROR
#define DOMAIN_ALIAS_RID_USERS
#define SECURITY_BUILTIN_DOMAIN_RID
#define SECURITY_AUTHENTICATED_USER_RID
#define SECURITY_NULL_RID
#define SECURITY_NT_AUTHORITY
#define DOMAIN_GROUP_RID_USERS