簡體   English   中英

無法從uint32_t *轉換為LPDWORD

[英]Cannot convert from uint32_t* to LPDWORD

我正在嘗試調用Windows API函數GetExitCodeProcess ,它將LPDWORD作為其第二個參數。

根據MSDNLPDWORD是指向無符號32位值的指針。 所以我試圖傳遞一個uint32_t* ,但編譯器(MSVC 11.0)對它不滿意:

錯誤C2664:'GetExitCodeProcess':無法將參數2從'uint32_t *'轉換為'LPDWORD'

static_cast也無濟於事。 這是為什么? 在這種情況下使用reinterpret_cast是否安全?

文檔

DWORD

一個32位無符號整數。 范圍是0到4294967295十進制。 此類型在IntSafe.h中聲明如下:

 typedef unsigned long DWORD; 

所以, LPDWORDunsigned long int* 但是你試圖傳遞unsigned int* 我知道類型指向大小相同的變量,但指針類型不兼容。

解決方案是聲明DWORD類型的變量,並傳遞該變量的地址。 像這樣的東西:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM