我正在尝试调用Windows API函数GetExitCodeProcess
,该函数将LPDWORD
作为其第二个参数。
根据MSDN,LPDWORD
是指向无符号32位值的指针。因此,我尝试传递uint32_t*
,但编译器(MSVC 11.0)对此不满意:
另外,static_cast
也无济于事。这是为什么?在这种情况下使用reinterpret_cast
安全吗?
最佳答案
从documentation:
因此,LPDWORD
是unsigned long int*
。但是您正在尝试传递unsigned int*
。我知道类型指向相同大小的变量,但是指针类型不兼容。
解决方案是声明一个类型为DWORD
的变量,并传递该变量的地址。像这样:
DWORD dwExitCode;
if (!GetExitCodeProcess(hProcess, &dwExitCode))
{
// deal with error
}
uint32_t ExitCode = dwExitCode;