获得详细错误信息-windows核心编程

windows程序员想要知道系统出错信息,一般使用GetLastError()来获取,该API获取的是错误码,如通过GetLastError返回123 我们可以查询VS自带工具errorloop得到出错码123的错误信息:文件名、目录名或卷标语法不正确。这是一件挺麻烦的事。所以如果开发过程中我们能直接得到错误码的错误信息,那就好了,下文正是实现如此功能。

void ErrorShowString(DWORD dwErrorCode,LPSTR szErrorStr) { DWORD dwError=dwErrorCode; HLOCAL hlocal=NULL; DWORD systemLocale=MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL); BOOL bOK=FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS| FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL,dwError,systemLocale,(PTSTR)&hlocal,0,NULL); if (!bOK) { HMODULE hDll=LoadLibraryEx("netmsg.dll",NULL,DONT_RESOLVE_DLL_REFERENCES); if(hDll) { bOK=FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_HMODULE| FORMAT_MESSAGE_IGNORE_INSERTS,hDll,dwError,systemLocale,(PTSTR)hlocal,0,NULL); FreeLibrary(hDll); } } if (bOK&&(hlocal)) { lstrcpy(szErrorStr,(PCSTR)LocalLock(hlocal)); LocalFree(hlocal); } else { lstrcpy(szErrorStr,"未知的错误"); } } 

你可能感兴趣的:(编程,windows,null,System,buffer,dll)