kernel32: Fixed buffer size on 64bit in IsWow64Process.
This commit is contained in:
parent
2d08038bac
commit
bfd088dbc6
|
@ -3755,7 +3755,7 @@ DWORD WINAPI RegisterServiceProcess(DWORD dwProcessId, DWORD dwType)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI IsWow64Process(HANDLE hProcess, PBOOL Wow64Process)
|
BOOL WINAPI IsWow64Process(HANDLE hProcess, PBOOL Wow64Process)
|
||||||
{
|
{
|
||||||
ULONG pbi;
|
ULONG_PTR pbi;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
status = NtQueryInformationProcess( hProcess, ProcessWow64Information, &pbi, sizeof(pbi), NULL );
|
status = NtQueryInformationProcess( hProcess, ProcessWow64Information, &pbi, sizeof(pbi), NULL );
|
||||||
|
|
|
@ -1863,6 +1863,62 @@ static void test_Handles(void)
|
||||||
SetStdHandle( STD_ERROR_HANDLE, handle );
|
SetStdHandle( STD_ERROR_HANDLE, handle );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_IsWow64Process(void)
|
||||||
|
{
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
STARTUPINFOA si;
|
||||||
|
DWORD ret;
|
||||||
|
BOOL is_wow64;
|
||||||
|
static char cmdline[] = "C:\\Program Files\\Internet Explorer\\iexplore.exe";
|
||||||
|
static char cmdline_wow64[] = "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe";
|
||||||
|
|
||||||
|
if (!pIsWow64Process)
|
||||||
|
{
|
||||||
|
skip("IsWow64Process is not available\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&si, 0, sizeof(si));
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||||
|
si.wShowWindow = SW_HIDE;
|
||||||
|
ret = CreateProcessA(NULL, cmdline_wow64, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
trace("Created process %s\n", cmdline_wow64);
|
||||||
|
is_wow64 = FALSE;
|
||||||
|
ret = pIsWow64Process(pi.hProcess, &is_wow64);
|
||||||
|
ok(ret, "IsWow64Process failed.\n");
|
||||||
|
ok(is_wow64, "is_wow64 returned FALSE.\n");
|
||||||
|
|
||||||
|
ret = TerminateProcess(pi.hProcess, 0);
|
||||||
|
ok(ret, "TerminateProcess error\n");
|
||||||
|
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&si, 0, sizeof(si));
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||||
|
si.wShowWindow = SW_HIDE;
|
||||||
|
ret = CreateProcessA(NULL, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
trace("Created process %s\n", cmdline);
|
||||||
|
is_wow64 = TRUE;
|
||||||
|
ret = pIsWow64Process(pi.hProcess, &is_wow64);
|
||||||
|
ok(ret, "IsWow64Process failed.\n");
|
||||||
|
ok(!is_wow64, "is_wow64 returned TRUE.\n");
|
||||||
|
|
||||||
|
ret = TerminateProcess(pi.hProcess, 0);
|
||||||
|
ok(ret, "TerminateProcess error\n");
|
||||||
|
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void test_SystemInfo(void)
|
static void test_SystemInfo(void)
|
||||||
{
|
{
|
||||||
SYSTEM_INFO si, nsi;
|
SYSTEM_INFO si, nsi;
|
||||||
|
@ -2089,6 +2145,7 @@ START_TEST(process)
|
||||||
test_QueryFullProcessImageNameA();
|
test_QueryFullProcessImageNameA();
|
||||||
test_QueryFullProcessImageNameW();
|
test_QueryFullProcessImageNameW();
|
||||||
test_Handles();
|
test_Handles();
|
||||||
|
test_IsWow64Process();
|
||||||
test_SystemInfo();
|
test_SystemInfo();
|
||||||
test_RegistryQuota();
|
test_RegistryQuota();
|
||||||
test_DuplicateHandle();
|
test_DuplicateHandle();
|
||||||
|
|
Loading…
Reference in New Issue