IsWow64Process-Funktion (wow64apiset.h)
Bestimmt, ob der angegebene Prozess unter WOW64- oder einem Intel64-x64-Prozessor ausgeführt wird.
Syntax
BOOL IsWow64Process(
[in] HANDLE hProcess,
[out] PBOOL Wow64Process
);
Parameter
[in] hProcess
Ein Handle für den Prozess. Das Handle muss über das PROCESS_QUERY_INFORMATION oder PROCESS_QUERY_LIMITED_INFORMATION Zugriffsrecht verfügen. Weitere Informationen finden Sie unter Prozesssicherheits- und Zugriffsberechtigungen.
Windows Server 2003 und Windows XP: Das Handle muss über das PROCESS_QUERY_INFORMATION Zugriffsrecht verfügen.
[out] Wow64Process
Ein Zeiger auf einen Wert, der auf TRUE festgelegt ist, wenn der Prozess unter WOW64 auf einem Intel64-, x64- oder ARM64-Prozessor ausgeführt wird. Wenn der Prozess unter 32-Bit-Windows ausgeführt wird, wird der Wert auf FALSE festgelegt. Wenn es sich bei dem Prozess um eine 32-Bit-Anwendung handelt, die unter 64-Bit-Windows 10 auf ARM ausgeführt wird, wird der Wert auf FALSE festgelegt. Wenn es sich bei dem Prozess um eine 64-Bit-Anwendung handelt, die unter 64-Bit-Windows ausgeführt wird, wird der Wert auch auf FALSE festgelegt.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Wert ungleich Null.
Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Anwendungen sollten IsWow64Process2- anstelle von IsWow64Process- verwenden, um festzustellen, ob ein Prozess unter WOW ausgeführt wird. IsWow64Process2 entfernt die Mehrdeutigkeit, die mehreren WOW-Umgebungen inhärent ist, indem sowohl die Architektur des Hosts als auch des Gasts für einen bestimmten Prozess explizit zurückgegeben wird. Anwendungen können diese Informationen verwenden, um Situationen wie die Ausführung unter Emulation auf ARM64 zuverlässig zu identifizieren. Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0501 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.
Beispiele
Rufen Sie aus Kompatibilität mit Betriebssystemen, die diese Funktion nicht unterstützen, GetProcAddress- auf, um zu ermitteln, ob IsWow64Process- in Kernel32.dllimplementiert ist. Wenn GetProcAddress erfolgreich ist, ist es sicher, diese Funktion aufzurufen. Andernfalls ist WOW64 nicht vorhanden. Beachten Sie, dass diese Technik keine zuverlässige Möglichkeit ist, zu erkennen, ob das Betriebssystem eine 64-Bit-Version von Windows ist, da die Kernel32.dll in den aktuellen Versionen von 32-Bit-Windows auch diese Funktion enthält.
#include <windows.h>
#include <tchar.h>
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
BOOL IsWow64()
{
BOOL bIsWow64 = FALSE;
//IsWow64Process is not available on all supported versions of Windows.
//Use GetModuleHandle to get a handle to the DLL that contains the function
//and GetProcAddress to get a pointer to the function if available.
fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
if(NULL != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{
//handle error
}
}
return bIsWow64;
}
int main( void )
{
if(IsWow64())
_tprintf(TEXT("The process is running under WOW64.\n"));
else
_tprintf(TEXT("The process is not running under WOW64.\n"));
return 0;
}
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Vista, Windows XP mit SP2 [Desktop-Apps | UWP-Apps] |
mindestens unterstützte Server- | Windows Server 2008, Windows Server 2003 mit SP1 [Desktop-Apps | UWP-Apps] |
Zielplattform- | Fenster |
Header- | wow64apiset.h (enthalten Windows.h unter Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib |
DLL- | Kernel32.dll |