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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值