네트워크 오류 검색
WNet 함수는 Windows for Workgroups와의 호환성을 위해 오류 코드를 반환합니다. 각 WNet 함수는 GetLastError에서 반환된 오류 코드 값도 설정합니다.
WNet 함수 중 하나가 ERROR_EXTENDED_ERROR 반환하는 경우 애플리케이션은 WNetGetLastError 함수를 호출하여 오류에 대한 추가 정보를 검색할 수 있습니다. 이 정보는 일반적으로 네트워크 공급자와 관련이 있습니다.
다음 예제에서는 애플리케이션 정의 오류 처리 함수(NetErrorHandler)를 보여 줍니다. 함수는 창 핸들, WNet 함수 중 하나에서 반환된 오류 코드 및 오류를 생성한 함수의 이름 등 세 가지 인수를 사용합니다. 오류 코드가 ERROR_EXTENDED_ERROR 경우 NetErrorHandler는 WNetGetLastError 를 호출하여 확장된 오류 정보를 얻고 정보를 출력합니다. 이 샘플은 MessageBox 함수를 호출하여 메시지를 처리합니다.
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "mpr.lib")
#pragma comment(lib, "user32.lib")
BOOL WINAPI NetErrorHandler(HWND hwnd,
DWORD dwErrorCode,
LPSTR lpszFunction)
{
DWORD dwWNetResult, dwLastError;
CHAR szError[256];
CHAR szCaption[256];
CHAR szDescription[256];
CHAR szProvider[256];
// The following code performs standard error-handling.
if (dwErrorCode != ERROR_EXTENDED_ERROR)
{
sprintf_s((LPSTR) szError, sizeof(szError), "%s failed; \nResult is %ld",
lpszFunction, dwErrorCode);
sprintf_s((LPSTR) szCaption, sizeof(szCaption), "%s error", lpszFunction);
MessageBox(hwnd, (LPSTR) szError, (LPSTR) szCaption, MB_OK);
return TRUE;
}
// The following code performs error-handling when the
// ERROR_EXTENDED_ERROR return value indicates that the
// WNetGetLastError function can retrieve additional information.
else
{
dwWNetResult = WNetGetLastError(&dwLastError, // error code
(LPSTR) szDescription, // buffer for error description
sizeof(szDescription), // size of error buffer
(LPSTR) szProvider, // buffer for provider name
sizeof(szProvider)); // size of name buffer
//
// Process errors.
//
if(dwWNetResult != NO_ERROR) {
sprintf_s((LPSTR) szError, sizeof(szError),
"WNetGetLastError failed; error %ld", dwWNetResult);
MessageBox(hwnd, (LPSTR) szError, "WNetGetLastError", MB_OK);
return FALSE;
}
//
// Otherwise, print the additional error information.
//
sprintf_s((LPSTR) szError, sizeof(szError),
"%s failed with code %ld;\n%s",
(LPSTR) szProvider, dwLastError, (LPSTR) szDescription);
sprintf_s((LPSTR) szCaption, sizeof(szCaption), "%s error", lpszFunction);
MessageBox(hwnd, (LPSTR) szError, (LPSTR) szCaption, MB_OK);
return TRUE;
}
}