mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 13:16:07 +00:00
[ADVAPI32]
Implement LogonUserEx[A/W]. svn path=/trunk/; revision=71385
This commit is contained in:
parent
dca4fd46af
commit
1dc0ccde6a
3 changed files with 125 additions and 22 deletions
|
@ -322,8 +322,8 @@
|
||||||
322 stdcall IsWellKnownSid(ptr long)
|
322 stdcall IsWellKnownSid(ptr long)
|
||||||
323 stdcall LockServiceDatabase(ptr)
|
323 stdcall LockServiceDatabase(ptr)
|
||||||
324 stdcall LogonUserA(str str str long long ptr)
|
324 stdcall LogonUserA(str str str long long ptr)
|
||||||
325 stub LogonUserExA
|
325 stdcall LogonUserExA(str str str long long ptr ptr ptr ptr ptr)
|
||||||
326 stub LogonUserExW
|
326 stdcall LogonUserExW(wstr wstr wstr long long ptr ptr ptr ptr ptr)
|
||||||
327 stdcall LogonUserW(wstr wstr wstr long long ptr)
|
327 stdcall LogonUserW(wstr wstr wstr long long ptr)
|
||||||
328 stdcall LookupAccountNameA(str str ptr ptr ptr ptr ptr)
|
328 stdcall LookupAccountNameA(str str ptr ptr ptr ptr ptr)
|
||||||
329 stdcall LookupAccountNameW(wstr wstr ptr ptr ptr ptr ptr)
|
329 stdcall LookupAccountNameW(wstr wstr ptr ptr ptr ptr ptr)
|
||||||
|
|
|
@ -221,16 +221,49 @@ CreateProcessAsUserW(HANDLE hToken,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
BOOL
|
||||||
LogonUserA(LPSTR lpszUsername,
|
WINAPI
|
||||||
LPSTR lpszDomain,
|
LogonUserA(
|
||||||
LPSTR lpszPassword,
|
_In_ LPSTR lpszUsername,
|
||||||
DWORD dwLogonType,
|
_In_opt_ LPSTR lpszDomain,
|
||||||
DWORD dwLogonProvider,
|
_In_opt_ LPSTR lpszPassword,
|
||||||
PHANDLE phToken)
|
_In_ DWORD dwLogonType,
|
||||||
|
_In_ DWORD dwLogonProvider,
|
||||||
|
_Out_opt_ PHANDLE phToken)
|
||||||
|
{
|
||||||
|
return LogonUserExA(lpszUsername,
|
||||||
|
lpszDomain,
|
||||||
|
lpszPassword,
|
||||||
|
dwLogonType,
|
||||||
|
dwLogonProvider,
|
||||||
|
phToken,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
LogonUserExA(
|
||||||
|
_In_ LPSTR lpszUsername,
|
||||||
|
_In_opt_ LPSTR lpszDomain,
|
||||||
|
_In_opt_ LPSTR lpszPassword,
|
||||||
|
_In_ DWORD dwLogonType,
|
||||||
|
_In_ DWORD dwLogonProvider,
|
||||||
|
_Out_opt_ PHANDLE phToken,
|
||||||
|
_Out_opt_ PSID *ppLogonSid,
|
||||||
|
_Out_opt_ PVOID *ppProfileBuffer,
|
||||||
|
_Out_opt_ LPDWORD pdwProfileLength,
|
||||||
|
_Out_opt_ PQUOTA_LIMITS pQuotaLimits)
|
||||||
{
|
{
|
||||||
UNICODE_STRING UserName;
|
UNICODE_STRING UserName;
|
||||||
UNICODE_STRING Domain;
|
UNICODE_STRING Domain;
|
||||||
|
@ -259,12 +292,16 @@ LogonUserA(LPSTR lpszUsername,
|
||||||
goto PasswordDone;
|
goto PasswordDone;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = LogonUserW(UserName.Buffer,
|
ret = LogonUserExW(UserName.Buffer,
|
||||||
Domain.Buffer,
|
Domain.Buffer,
|
||||||
Password.Buffer,
|
Password.Buffer,
|
||||||
dwLogonType,
|
dwLogonType,
|
||||||
dwLogonProvider,
|
dwLogonProvider,
|
||||||
phToken);
|
phToken,
|
||||||
|
ppLogonSid,
|
||||||
|
ppProfileBuffer,
|
||||||
|
pdwProfileLength,
|
||||||
|
pQuotaLimits);
|
||||||
|
|
||||||
if (Password.Buffer != NULL)
|
if (Password.Buffer != NULL)
|
||||||
RtlFreeUnicodeString(&Password);
|
RtlFreeUnicodeString(&Password);
|
||||||
|
@ -285,13 +322,45 @@ UsernameDone:
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
BOOL
|
||||||
LogonUserW(LPWSTR lpszUsername,
|
WINAPI
|
||||||
LPWSTR lpszDomain,
|
LogonUserW(
|
||||||
LPWSTR lpszPassword,
|
_In_ LPWSTR lpszUsername,
|
||||||
DWORD dwLogonType,
|
_In_opt_ LPWSTR lpszDomain,
|
||||||
DWORD dwLogonProvider,
|
_In_opt_ LPWSTR lpszPassword,
|
||||||
PHANDLE phToken)
|
_In_ DWORD dwLogonType,
|
||||||
|
_In_ DWORD dwLogonProvider,
|
||||||
|
_Out_opt_ PHANDLE phToken)
|
||||||
|
{
|
||||||
|
return LogonUserExW(lpszUsername,
|
||||||
|
lpszDomain,
|
||||||
|
lpszPassword,
|
||||||
|
dwLogonType,
|
||||||
|
dwLogonProvider,
|
||||||
|
phToken,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
LogonUserExW(
|
||||||
|
_In_ LPWSTR lpszUsername,
|
||||||
|
_In_opt_ LPWSTR lpszDomain,
|
||||||
|
_In_opt_ LPWSTR lpszPassword,
|
||||||
|
_In_ DWORD dwLogonType,
|
||||||
|
_In_ DWORD dwLogonProvider,
|
||||||
|
_Out_opt_ PHANDLE phToken,
|
||||||
|
_Out_opt_ PSID *ppLogonSid,
|
||||||
|
_Out_opt_ PVOID *ppProfileBuffer,
|
||||||
|
_Out_opt_ LPDWORD pdwProfileLength,
|
||||||
|
_Out_opt_ PQUOTA_LIMITS pQuotaLimits)
|
||||||
{
|
{
|
||||||
SID_IDENTIFIER_AUTHORITY LocalAuthority = {SECURITY_LOCAL_SID_AUTHORITY};
|
SID_IDENTIFIER_AUTHORITY LocalAuthority = {SECURITY_LOCAL_SID_AUTHORITY};
|
||||||
SID_IDENTIFIER_AUTHORITY SystemAuthority = {SECURITY_NT_AUTHORITY};
|
SID_IDENTIFIER_AUTHORITY SystemAuthority = {SECURITY_NT_AUTHORITY};
|
||||||
|
@ -503,6 +572,8 @@ LogonUserW(LPWSTR lpszUsername,
|
||||||
|
|
||||||
*phToken = TokenHandle;
|
*phToken = TokenHandle;
|
||||||
|
|
||||||
|
/* FIXME: return ppLogonSid, ppProfileBuffer, pdwProfileLength and pQuotaLimits */
|
||||||
|
|
||||||
done:
|
done:
|
||||||
if (ProfileBuffer != NULL)
|
if (ProfileBuffer != NULL)
|
||||||
LsaFreeReturnBuffer(ProfileBuffer);
|
LsaFreeReturnBuffer(ProfileBuffer);
|
||||||
|
|
|
@ -2566,6 +2566,36 @@ PVOID WINAPI LockResource(HGLOBAL);
|
||||||
BOOL WINAPI LogonUserA(_In_ LPSTR, _In_opt_ LPSTR, _In_opt_ LPSTR, _In_ DWORD, _In_ DWORD, _Outptr_ PHANDLE);
|
BOOL WINAPI LogonUserA(_In_ LPSTR, _In_opt_ LPSTR, _In_opt_ LPSTR, _In_ DWORD, _In_ DWORD, _Outptr_ PHANDLE);
|
||||||
BOOL WINAPI LogonUserW(_In_ LPWSTR, _In_opt_ LPWSTR, _In_opt_ LPWSTR, _In_ DWORD, _In_ DWORD, _Outptr_ PHANDLE);
|
BOOL WINAPI LogonUserW(_In_ LPWSTR, _In_opt_ LPWSTR, _In_opt_ LPWSTR, _In_ DWORD, _In_ DWORD, _Outptr_ PHANDLE);
|
||||||
|
|
||||||
|
_Success_(return != FALSE)
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
LogonUserExA(
|
||||||
|
_In_ LPSTR lpszUsername,
|
||||||
|
_In_opt_ LPSTR lpszDomain,
|
||||||
|
_In_opt_ LPSTR lpszPassword,
|
||||||
|
_In_ DWORD dwLogonType,
|
||||||
|
_In_ DWORD dwLogonProvider,
|
||||||
|
_Out_opt_ PHANDLE phToken,
|
||||||
|
_Out_opt_ PSID *ppLogonSid,
|
||||||
|
_Out_opt_ PVOID *ppProfileBuffer,
|
||||||
|
_Out_opt_ LPDWORD pdwProfileLength,
|
||||||
|
_Out_opt_ PQUOTA_LIMITS pQuotaLimits);
|
||||||
|
|
||||||
|
_Success_(return != FALSE)
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
LogonUserExW(
|
||||||
|
_In_ LPWSTR lpszUsername,
|
||||||
|
_In_opt_ LPWSTR lpszDomain,
|
||||||
|
_In_opt_ LPWSTR lpszPassword,
|
||||||
|
_In_ DWORD dwLogonType,
|
||||||
|
_In_ DWORD dwLogonProvider,
|
||||||
|
_Out_opt_ PHANDLE phToken,
|
||||||
|
_Out_opt_ PSID *ppLogonSid,
|
||||||
|
_Out_opt_ PVOID *ppProfileBuffer,
|
||||||
|
_Out_opt_ LPDWORD pdwProfileLength,
|
||||||
|
_Out_opt_ PQUOTA_LIMITS pQuotaLimits);
|
||||||
|
|
||||||
_Success_(return != FALSE)
|
_Success_(return != FALSE)
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
@ -3359,6 +3389,7 @@ typedef PCACTCTXW PCACTCTX;
|
||||||
#define LoadLibrary LoadLibraryW
|
#define LoadLibrary LoadLibraryW
|
||||||
#define LoadLibraryEx LoadLibraryExW
|
#define LoadLibraryEx LoadLibraryExW
|
||||||
#define LogonUser LogonUserW
|
#define LogonUser LogonUserW
|
||||||
|
#define LogonUserEx LogonUserExW
|
||||||
#define LookupAccountName LookupAccountNameW
|
#define LookupAccountName LookupAccountNameW
|
||||||
#define LookupAccountSid LookupAccountSidW
|
#define LookupAccountSid LookupAccountSidW
|
||||||
#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
|
#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
|
||||||
|
@ -3567,6 +3598,7 @@ typedef ENUMRESTYPEPROCA ENUMRESTYPEPROC;
|
||||||
#define LoadLibrary LoadLibraryA
|
#define LoadLibrary LoadLibraryA
|
||||||
#define LoadLibraryEx LoadLibraryExA
|
#define LoadLibraryEx LoadLibraryExA
|
||||||
#define LogonUser LogonUserA
|
#define LogonUser LogonUserA
|
||||||
|
#define LogonUserEx LogonUserExA
|
||||||
#define LookupAccountName LookupAccountNameA
|
#define LookupAccountName LookupAccountNameA
|
||||||
#define LookupAccountSid LookupAccountSidA
|
#define LookupAccountSid LookupAccountSidA
|
||||||
#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
|
#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue