[疑问]形参都不同,函数指针还能强制转换?关于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;
}

------解决方案--------------------
不能给自己分赛,我来学习学习,顺便给我分吧。
------解决方案--------------------
没人回复时可以撤销返还分数