1. 当程序中调用函数返回错误或是发生其它错误时可以调用DWORD GetLastError()函数来获取上一次发生的错误的代码,但是必须在错误发生后立即调用此函数,一旦程序调用了其它函数,这个值将会被重写。根据返回的这个错误代码可以获得相应的错误描述:
DWORD dwError = GetLastError();// Get last error code
HLOCAL = NULL; // Buffer that gets the error message string
DWORD systemLocal = MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL);
// Get the error code’s textual description
BOOL fOK = FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS|
FORMAT_MESSAGE_ALLOCATE_BUFFER , NULL , dwError , systemLocal,
(PTSTR)&hlocal, 0 , NULL);
if(!fOK)
{
// Is it a network-related error?
HMODULE hDll = LoadLibraryEx(TEXT(“netmsg.dll”) , NULL , DON’T_RESOLVE_DLL_REFERENCES);
if(NULL != hDll)
{
fOK = FormatMessage(
FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS|
FORMAT_MESSAGE_ALLOCATE_BUFFER , hDll , dwError , systemLocal,
(PTSTR)&hlocal, 0 , NULL);
FreeLibrary(hDll);
}
}
if( fOK && (NULL != hlocal ))
{
// display message
// (PCTSTR) LocalLock(hlocal) can access the string
LocalFree(hlocal);
}
2. 当在程序中自定义错误代码时,当发生错误时调用VOID SetLastError(DWORD dwErrCode)函数来设置错误代码。
摘自Windows 核心编程。