| 1234567891011121314151617181920212223242526272829303132333435363738 |
- #include "system_error.h"
- #include <Windows.h>
- namespace am {
- const std::string& system_error::error2str(unsigned long error)
- {
- DWORD system_locale = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
- HLOCAL local_buf = nullptr;
- BOOL ret = FormatMessage(
- FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER,
- NULL, error, system_locale,(PSTR) &local_buf, 0, NULL);
- if (!ret) {
- HMODULE hnetmsg = LoadLibraryEx("netmsg.dll", NULL, DONT_RESOLVE_DLL_REFERENCES);
- if (hnetmsg != nullptr) {
- ret = FormatMessage(
- FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER,
- hnetmsg, error, system_locale, (PSTR)&local_buf, 0, NULL);
- FreeLibrary(hnetmsg);
- }
- }
- std::string error_str;
- if (ret) {
- error_str = (LPCTSTR)LocalLock(local_buf);
- LocalFree(local_buf);
- }
- return error_str;
- }
- }
|