Согласно this , нет способа преобразовать код ошибки HRESULT в ошибку Win32 код. Поэтому (по крайней мере, насколько я понимаю) я использую FormatMessage для генерации сообщений об ошибках (т.е.
std::wstring Exception::GetWideMessage() const
{
using std::tr1::shared_ptr;
shared_ptr buff;
LPWSTR buffPtr;
DWORD bufferLength = FormatMessageW(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetErrorCode(),
0,
reinterpret_cast(&buffPtr),
0,
NULL);
buff.reset(buffPtr, LocalFreeHelper());
return std::wstring(buffPtr, bufferLength);
}
) не работает для HRESULT.
Как мне сгенерировать такие типы строк с системными ошибками для HRESULT?