当一个WNet函数返回WN_EXTENDED_ERROR时,应用程序可以调用WNetGetLastError函数来获取有关发生的错误的更多信息。该信息通常是针对网络提供商的。
以下示例说明了一个应用程序定义的错误处理函数(NetErrorHandler),它使用三个参数:一个窗口句柄,一个WNet函数返回的错误代码以及产生错误的函数的名称。如果错误代码为WN_EXTENDED_ERROR,则NetErrorHandler将调用WNetGetLastError以获取扩展错误信息。
BOOL WINAPI NetErrorHandler(HWND hwnd,
DWORD dwErrorCode,
LPSTR lpszFunction)
{
DWORD dwWNetResult, dwLastError;
CHAR szError[256];
CHAR szCaption[256];
CHAR szDescription[256];
CHAR szProvider[256];
//以下代码执行标准错误处理。
if (dwErrorCode != ERROR_EXTENDED_ERROR)
{
wsprintf((LPSTR) szError, "%s failed; \nResult is %ld",
lpszFunction, dwErrorCode);
wsprintf((LPSTR) szCaption, "%s error", lpszFunction);
MessageBox(hwnd, (LPSTR) szError, (LPSTR) szCaption, MB_OK);
return TRUE;
}
//以下代码执行错误处理
// ERROR_EXTENDED_ERROR返回值表示WNetGetLastError
//可以检索其他信息。
其他
{
dwWNetResult = WNetGetLastError(&dwLastError,
(LPSTR) szDescription, //缓冲区的错误描述
的sizeof(szDescription),
(LPSTR) szProvider, //提供程序名称的缓冲区
sizeof(szProvider));
if(dwWNetResult != NO_ERROR) {
wsprintf((LPSTR)szError。
"WNetGetLastError failed; error %ld", dwWNetResult);
MessageBox(hwnd,(LPSTR)szError,
"WNetGetLastError", MB_OK);
return FALSE;
}
wsprintf((LPSTR)szError。
"%s failed with code %ld;\n%s",
(LPSTR) szProvider, dwLastError, (LPSTR) szDescription);
wsprintf((LPSTR) szCaption, "%s error", lpszFunction);
MessageBox(hwnd, (LPSTR) szError, (LPSTR) szCaption, MB_OK);
return TRUE;
}
}