| 28 | }; |
| 29 | |
| 30 | std::string get_win32_error_msg(DWORD error_code) { |
| 31 | std::unique_ptr<wchar_t[], LocalFreeHelper> buff; |
| 32 | LPWSTR buf_ptr = nullptr; |
| 33 | DWORD buf_len = 0; |
| 34 | if (error_code >= INTERNET_ERROR_BASE && error_code <= INTERNET_ERROR_LAST) { |
| 35 | buf_len = ::FormatMessageW( |
| 36 | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, GetModuleHandle(L"wininet.dll"), |
| 37 | error_code, 0, reinterpret_cast<LPWSTR>(&buf_ptr), 0, nullptr); |
| 38 | } else { |
| 39 | assert(false); // unsupported |
| 40 | } |
| 41 | buff.reset(buf_ptr); |
| 42 | auto str = to_utf8_string({buff.get(), buf_len}); |
| 43 | return str; |
| 44 | } |
| 45 | |
| 46 | } // namespace |
| 47 |
no test coverage detected