windows 64位操作系统判断及重定向Redirection 示例

来源:互联网 发布:c言语编程聊天室 编辑:程序博客网 时间:2024/05/20 06:27
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;

typedef BOOL (WINAPI *TWow64DisableWow64FsRedirection)(PVOID *);

TWow64DisableWow64FsRedirection fnWow64DisableWow64FsRedirection=NULL;//

typedef BOOL (WINAPI *TWow64RevertWow64FsRedirection)(PVOID );

TWow64RevertWow64FsRedirection fnWow64RevertWow64FsRedirection=NULL;//


BOOL IsWow64()
{
    BOOL bIsWow64 = FALSE;

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

    
    PrintLog(_T("fnIsWow64Process entry"));
    if(NULL != fnIsWow64Process)
    {
        PrintLog(_T("fnIsWow64Process is not NULL"));
        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
        {
            ;//handle error
             PrintLog(_T("fnIsWow64Process is not success"));

        }
    }


    return bIsWow64;
}

void WowRedirectionTest(void)

{

    PVOID Value = NULL;

    HINSTANCE  hlibrary;

    fnWow64DisableWow64FsRedirection  =  (TWow64DisableWow64FsRedirection)  GetProcAddress(hlibrary,"Wow64DisableWow64FsRedirection");
             
    if (!fnWow64DisableWow64FsRedirection)
    {    
       return ;
    }

   fnWow64RevertWow64FsRedirection  =  (TWow64RevertWow64FsRedirection)  GetProcAddress(hlibrary,"Wow64RevertWow64FsRedirection");

   if (!fnWow64RevertWow64FsRedirection)
   {
         return ;
   }

    fnWow64DisableWow64FsRedirection(&Value);

    //do somethings

    fnWow64RevertWow64FsRedirection(&Value);
}


原创粉丝点击