win32/HResult: try to use FormatMessage()
This commit is contained in:
parent
3a948515ce
commit
24a205a1aa
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "HResult.hxx"
|
#include "HResult.hxx"
|
||||||
|
#include "system/Error.hxx"
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstdarg>
|
#include <cstdarg>
|
||||||
|
@ -27,11 +28,21 @@
|
||||||
std::string
|
std::string
|
||||||
HResultCategory::message(int Errcode) const
|
HResultCategory::message(int Errcode) const
|
||||||
{
|
{
|
||||||
|
char buffer[256];
|
||||||
|
|
||||||
|
/* FormatMessage() supports some HRESULT values (depending on
|
||||||
|
the Windows version) */
|
||||||
|
if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
|
||||||
|
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||||
|
nullptr, Errcode, 0,
|
||||||
|
buffer, sizeof(buffer),
|
||||||
|
nullptr))
|
||||||
|
return buffer;
|
||||||
|
|
||||||
const auto msg = HRESULTToString(Errcode);
|
const auto msg = HRESULTToString(Errcode);
|
||||||
if (!msg.empty())
|
if (!msg.empty())
|
||||||
return std::string(msg);
|
return std::string(msg);
|
||||||
|
|
||||||
char buffer[11]; // "0x12345678\0"
|
|
||||||
int size = snprintf(buffer, sizeof(buffer), "0x%1x", Errcode);
|
int size = snprintf(buffer, sizeof(buffer), "0x%1x", Errcode);
|
||||||
assert(2 <= size && size <= 10);
|
assert(2 <= size && size <= 10);
|
||||||
return std::string(buffer, size);
|
return std::string(buffer, size);
|
||||||
|
|
Loading…
Reference in New Issue