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 Prozesssicherheit und Zugriffsrechte.

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- oder x64-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 ebenfalls auf FALSE festgelegt.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Nichtzero-Wert.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Anwendungen sollten IsWow64Process2 anstelle von IsWow64Process verwenden, um zu bestimmen, ob ein Prozess unter WOW ausgeführt wird. IsWow64Process2 entfernt die Mehrdeutigkeit, die mehreren WOW-Umgebungen innewohnt, indem sowohl die Architektur des Hosts als auch der Gast 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 zur Kompatibilität mit Betriebssystemen, die diese Funktion nicht unterstützen, GetProcAddress auf, um zu erkennen, ob IsWow64Process in Kernel32.dll implementiert ist. Wenn GetProcAddress erfolgreich ist, ist es sicher, diese Funktion aufzurufen. Andernfalls ist WOW64 nicht vorhanden. Beachten Sie, dass dieses Verfahren keine zuverlässige Möglichkeit ist, zu erkennen, ob es sich beim Betriebssystem um eine 64-Bit-Version von Windows handelt, da die Kernel32.dll in den aktuellen Versionen von 32-Bit-Windows 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

   
Unterstützte Mindestversion (Client) Windows Vista, Windows XP mit SP2 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008, Windows Server 2003 mit SP1 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wow64apiset.h (einschließlich Windows.h unter Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

GetNativeSystemInfo

IsWow64Message

WOW64