检索网络错误

【勇芳软件工作室】汉化HomePreviousNext

当一个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;

}

}