我正在尝试调用Windows API函数GetExitCodeProcess,该函数将LPDWORD作为其第二个参数。

根据MSDNLPDWORD是指向无符号32位值的指针。因此,我尝试传递uint32_t*,但编译器(MSVC 11.0)对此不满意:



另外,static_cast也无济于事。这是为什么?在这种情况下使用reinterpret_cast安全吗?

最佳答案

documentation:



因此,LPDWORDunsigned long int*。但是您正在尝试传递unsigned int*。我知道类型指向相同大小的变量,但是指针类型不兼容。

解决方案是声明一个类型为DWORD的变量,并传递该变量的地址。像这样:

DWORD dwExitCode;
if (!GetExitCodeProcess(hProcess, &dwExitCode))
{
    // deal with error
}
uint32_t ExitCode = dwExitCode;

08-27 20:03