我想要检索DirectX 9的错误字符串,但我在网上找到的方法都是使用FormatMessage()和_com_error.ErrorMessage(),但这两种方法都无法满足我的需求。
hr = g_pd3dDevice->GetRenderTargetData(...
... // the debugger tells me hr = 0x8876086c
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, hr, 0, (LPTSTR)&lpBuf, 0, NULL))
// it returns 0 with lpBuf unallocated
当FormatMessage()失败时,我会再次使用它,并使用GetLastError()来查看FormatMessage()失败的原因:
"The system cannot find message text for message number 0x%1 in the message file for %2."
_com_error.ErrorMessage()告诉我:"未知错误0x8876086c"。
HRESULT
代码,并以一种方便的方式解码这些值。 - Roman R.