关于VC预定义常量_WIN32,WIN32,_WIN64等预定义宏的介绍(整理、转载)

时间:2025-03-25 08:11:33
 
 
#include
#include

typedef BOOL ( WINAPI * LPFN_ISWOW64PROCESS ) ( HANDLE , PBOOL );

LPFN_ISWOW64PROCESS fnIsWow64Process = NULL ;

BOOL Isx64Application () {
    return ( sizeof ( LPFN_ISWOW64PROCESS ) == 8 )? TRUE : FALSE ;
}

BOOL IsWow64 () {

    BOOL bIsWow64 = FALSE ;

    if (! fnIsWow64Process )
        fnIsWow64Process = ( LPFN_ISWOW64PROCESS ) GetProcAddress ( GetModuleHandle ( TEXT ( "kernel32" )), "IsWow64Process" );

    if ( fnIsWow64Process )
        if (! fnIsWow64Process ( GetCurrentProcess (), & bIsWow64 ))
            return FALSE ;

    return bIsWow64 ;
}

int main ( void ) {

    if ( Isx64Application ())
        _tprintf ( TEXT ( "The application is a x64 program.\n" ));
    else {
        if (! IsWow64 ())
            _tprintf ( TEXT ( "The application is running under Windows x86.\n" ));
        else
            _tprintf ( TEXT ( "The application is a x86 program running under Windows x64.\n" ));
    }

    return 0 ;
}