[疑问]形参都不同,函数指针还能强制转换?关于IsWow64()的疑问,该如何处理
[疑问]形参都不同,函数指针还能强制转换?关于IsWow64()的疑问
win32平台下,有这么一段程序,用于判断程序是否在64位平台兼容
BOOL IsWow64()
{
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;//定义了一个函数指针,要求形参为(HANDLE, PBOOL)
BOOL bIsWow64 = FALSE;
//疑问1.下面这句,居然强制转换了,MSDN上说的GetProcAddress()的形参不是(HANDLE, PBOOL)啊
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(_T("kernel32")), "IsWow64Process");
if (NULL != fnIsWow64Process)
{
//疑问2.下面这句,我晕了,既然fnIsWow64Process都没有真的指向一个有(HANDLE, PBOOL)的函数,怎么传入&bIsWow64。谁在返回这个值?
fnIsWow64Process(GetCurrentProcess(),&bIsWow64);
}
return bIsWow64;
}
------解决方案--------------------
不能给自己分赛,我来学习学习,顺便给我分吧。
------解决方案--------------------
没人回复时可以撤销返还分数
win32平台下,有这么一段程序,用于判断程序是否在64位平台兼容
BOOL IsWow64()
{
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;//定义了一个函数指针,要求形参为(HANDLE, PBOOL)
BOOL bIsWow64 = FALSE;
//疑问1.下面这句,居然强制转换了,MSDN上说的GetProcAddress()的形参不是(HANDLE, PBOOL)啊
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(_T("kernel32")), "IsWow64Process");
if (NULL != fnIsWow64Process)
{
//疑问2.下面这句,我晕了,既然fnIsWow64Process都没有真的指向一个有(HANDLE, PBOOL)的函数,怎么传入&bIsWow64。谁在返回这个值?
fnIsWow64Process(GetCurrentProcess(),&bIsWow64);
}
return bIsWow64;
}
------解决方案--------------------
不能给自己分赛,我来学习学习,顺便给我分吧。
------解决方案--------------------
没人回复时可以撤销返还分数