IsWow64Process 함수(wow64apiset.h)

지정된 프로세스가 WOW64 또는 x64 프로세서의 Intel64에서 실행 중인지 여부를 확인합니다.

구문

BOOL IsWow64Process(
  [in]  HANDLE hProcess,
  [out] PBOOL  Wow64Process
);

매개 변수

[in] hProcess

프로세스에 대한 핸들입니다. 핸들에는 PROCESS_QUERY_INFORMATION 또는 PROCESS_QUERY_LIMITED_INFORMATION 액세스 권한이 있어야 합니다. 자세한 내용은 프로세스 보안 및 액세스 권한을 참조하세요.

Windows Server 2003 및 Windows XP: 핸들에는 PROCESS_QUERY_INFORMATION 액세스 권한이 있어야 합니다.

[out] Wow64Process

프로세스가 Intel64 또는 x64 프로세서의 WOW64에서 실행되는 경우 TRUE로 설정된 값에 대한 포인터입니다. 프로세스가 32비트 Windows에서 실행되는 경우 값은 FALSE로 설정됩니다. 프로세스가 ARM의 64비트 Windows 10 실행 중인 32비트 애플리케이션인 경우 값은 FALSE로 설정됩니다. 프로세스가 64비트 Windows에서 실행되는 64비트 애플리케이션인 경우 값도 FALSE로 설정됩니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값입니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

애플리케이션은 IsWow64Process 대신 IsWow64Process2 를 사용하여 프로세스가 WOW에서 실행 중인지 확인해야 합니다. IsWow64Process2 는 지정된 프로세스에 대해 호스트와 게스트의 아키텍처를 모두 명시적으로 반환하여 여러 WOW 환경에 내재된 모호성을 제거합니다. 애플리케이션은 이 정보를 사용하여 ARM64의 에뮬레이션에서 실행되는 것과 같은 상황을 안정적으로 식별할 수 있습니다. 이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 0x0501 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

예제

이 함수를 지원하지 않는 운영 체제와의 호환성을 위해 GetProcAddress 를 호출하여 IsWow64Process 가 Kernel32.dll 구현되었는지 여부를 검색합니다. GetProcAddress가 성공하면 이 함수를 호출하는 것이 안전합니다. 그렇지 않으면 WOW64가 없습니다. 현재 버전의 32비트 Windows에 있는 Kernel32.dll 이 함수도 포함되어 있기 때문에 이 기술은 운영 체제가 64비트 버전의 Windows인지 여부를 검색하는 신뢰할 수 있는 방법이 아닙니다.

#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;
}

요구 사항

   
지원되는 최소 클라이언트 Windows Vista, WINDOWS XP SP2 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008, Windows Server 2003 SP1 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 wow64apiset.h(Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2에 Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

GetNativeSystemInfo

IsWow64Message

WOW64