根据这个,没有办法到HRESULT错误代码转换为Win32错误代码.因此(至少对我的理解),我使用FormatMessage来生成错误消息(即
std::wstring Exception::GetWideMessage() const
{
using std::tr1::shared_ptr;
shared_ptr<void> buff;
LPWSTR buffPtr;
DWORD bufferLength = FormatMessageW(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetErrorCode(),
0,
reinterpret_cast<LPWSTR>(&buffPtr),
0,
NULL);
buff.reset(buffPtr, LocalFreeHelper());
return std::wstring(buffPtr, bufferLength);
}
Run Code Online (Sandbox Code Playgroud)
)不适用于HRESULTs.
如何为HRESULT生成这些特定于系统的错误字符串?