Delphi很方便将system error code 转为错误信息, C++也可实现 :
bool SysErrorMessage(DWORD errCode, LPWSTR outBuffer, size_t& size) {
LPVOID lpvMessageBuffer;
DWORD lvSize=FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL, errCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPWSTR)&lpvMessageBuffer, 0, NULL);
bool lvRet = memcpy_s(outBuffer, size, lpvMessageBuffer, lvSize*sizeof(WCHAR)) == 0;
size = lvSize;
LocalFree(lpvMessageBuffer);
return true;
}
调用:
WCHAR lvBuffer[256] = L"";
if (SysErrorMessage(5,lvBuffer lvSize)) {
OutputDebugString(lvBuffer);