0
我有興趣獲取WinAPI錯誤代碼的符號名稱(而不是的文本說明!)(例如,錯誤代碼5爲ERROR_ACCESS_DENIED)。有沒有辦法做到這一點,而不是在我的代碼中實現自定義錯誤表?如何獲取WinAPI錯誤的符號名稱?
我有興趣獲取WinAPI錯誤代碼的符號名稱(而不是的文本說明!)(例如,錯誤代碼5爲ERROR_ACCESS_DENIED)。有沒有辦法做到這一點,而不是在我的代碼中實現自定義錯誤表?如何獲取WinAPI錯誤的符號名稱?
沒有API來做到這一點。你將需要從表格中查看價值。你可以通過解析winerror.h
來生成表格。
如前所述,沒有辦法獲得錯誤代碼的符號名稱。
但有一種獲取錯誤代碼描述的方法。這是一個小函數,我用它可以在不查看的情況下獲得有關錯誤的更多信息:
void printLastError(DWORD errCode)
{
LPVOID lpMsgBuff;
int len;
len = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
errCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuff,
0,
NULL);
if (len > 0)
{
printf("error %d: %s\n", errCode, lpMsgBuff);
LocalFree(lpMsgBuff); // release allocated memory!!!
}
}