static wstring getLastError(DWORD error = GetLastError())
{
LPVOID buf;
DWORD buf_len = 0;
if (12000 <= error && error <= 12175) {
static HMODULE handle = GetModuleHandleW(L"winhttp.dll");
buf_len= FormatMessageW(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_HMODULE,
handle, //NULL,
error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(wchar_t*)&buf,
0, NULL);
} else {
buf_len= FormatMessageW(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(wchar_t*)&buf,
0, NULL);
}
wstringstream ss;
if (buf_len) {
wstring msg((wchar_t*)buf, (wchar_t*)buf + buf_len);
LocalFree(buf);
//LFCR(\r\b) 제거
auto it = msg.begin();
while (it != msg.end()) it = (*it == 0x000A || *it == 0x000D) ? msg.erase(it) : it + 1;
ss << msg;
}
ss << L"[" << error << L"]";
return ss.str();
}
'C++' 카테고리의 다른 글
mongoclient visual studio 2010 + boost 빌드 (0) | 2014.03.13 |
---|---|
nginx, node.js 윈도우 서비스 등록 : NSSM, WINSW (0) | 2014.01.03 |
현재 프로세스 의 바이너리 풀패스 가져오기 (0) | 2013.10.25 |
네트워크 worker/logic thread에 관한 글 (0) | 2013.10.11 |
Network 제한, 테스트 툴 (0) | 2013.10.08 |
visual studio 파일 저장시 줄끝 공백 자동 제거 - 매크로 (0) | 2013.09.25 |
실시간 평균, 분산 계산하기 (0) | 2013.08.01 |
SNMP (0) | 2013.07.19 |