두 서비스가 있습니다. 한 서비스는 32 비트 (process1)이고 다른 서비스는 64 비트 (process2)입니다. process2가 실행 중인지 확인하기 위해 process1이 사용하는 코드가 있습니다. HANDLE hProcess; RESET_WIN_ERRNO;Windows 서버 2008에서 프로세스가 아직 실행 중인지 확인하는 방법은 무엇입니까?
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, ProcessId);
if (hProcess == NULL) {
os_SetWinErr(err_code);
return FALSE;
}
CloseHandle(hProcess);
return TRUE;
이 코드는 Windows Server 2003에서 잘 작동하지만, 2008 년 모든 아이디어 Windows 서버에서 작동하지 않는 이유는 무엇입니까?
win2008에 도입 된 서비스에 대해서는 Session0에 대해 읽었지만이 경우에는 둘 다 서비스입니다 (Microsoft가 Java를 너무나 싫어하여 Session1로 이동하지 않는 경우). 따라서 액세스 문제가 없어야합니다.
이 스레드를 찾았습니다 : http://social.msdn.microsoft.com/forums/en-US/winserver2008appcompatabilityandcertification/thread/c7d7e3fe-f8e5-49c3-a16f-8e3dec5e8cf8/ 이것은 32 비트 프로세스가 더 이상 64 비트 프로세스에 액세스 할 수 없다는 것을 나타냅니다. 여기서 무엇을 할 수 있습니까?
감사합니다. 대신 EnumProcessModulesEx를 사용하려고합니다. –
이것은 대답이 될 수 없습니다. 프로세스는 프로세스가 32 비트인지 64 비트인지에 관계없이 기본적으로 같은 값입니다. WOW64의 일부분을 분해했고, 32 비트 WOW64 핸들을 64 비트 핸들로 변환하는 것은 부호 확장 일뿐입니다. –