WIA 오류 처리 예제
디바이스 상태 메시지를 보내는 드라이버의 예는 WIA(Windows 이미지 획득) 드라이버 샘플에서 확장 WIA 2.0 몬스터 드라이버 샘플을 참조하세요. 이 샘플에서는 간단한 오류 처리기를 구현하는 방법을 보여 줍니다.
예: 확장 프로그램 오류 처리
다음 코드 조각은 간단한 오류 전달 확장을 구현하는 방법을 보여줍니다. 이 오류 처리 확장은 WIA_ERROR_COVER_OPEN 디바이스 상태 오류만 처리하고 모달 대화 상자를 표시합니다. 이 예제를 간소화하기 위해 일부 코드가 생략되었습니다.
STDMETHODIMP
CErrHandler::ReportStatus(
IN LONG lFlags,
IN HWND hwndParent,
IN IWiaItem2 *pWiaItem2,
IN HRESULT hrStatus,
IN LONG lPercentComplete)
{
HRESULT hr = WIA_STATUS_NOT_HANDLED;
if (WIA_ERROR_COVER_OPEN == hrStatus)
{
int i;
i = MessageBox(hwndParent,
ERROR_COVER_OPEN_STR,
TEXT("Driver UI Extension"),
MB_RETRYCANCEL|MB_TASKMODAL|MB_ICONERROR);
if (IDOK == i)
{
hr = S_OK;
}
else
{
hr = WIA_ERROR_COVER_OPEN;
}
}
return hr;
}
STDMETHODIMP
CErrHandler::GetStatusDescription(
IN LONG lFlags,
IN IWiaItem2 *pWiaItem2,
IN HRESULT hrStatus,
OUT BSTR *pbstrDescription)
{
HRESULT hr = pbstrDescription ? WIA_STATUS_NOT_HANDLED :
E_INVALIDARG;
if (WIA_ERROR_COVER_OPEN == hrStatus)
{
BSTR bstrDescription = NULL;
bstrDescription = SysAllocString(ERROR_COVER_OPEN_STR);
if (bstrDescription)
{
*pbstrDescription = bstrDescription;
hr = S_OK;
}
else
{
hr = E_OUTOFMEMORY;
}
}
return hr;
}