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 核心编程。

posted on 2011-05-18 11:04  zhaojunlucky  阅读(163)  评论(0编辑  收藏  举报