在 WIA 设备上进行诊断

WIA 服务可以通过调用 IStiUSD::D诊断 方法来测试设备的功能状态。 WIA 微型驱动程序应检查硬件的当前功能状态并报告结果。 在 WIA 设备的默认属性页上按下"测试设备"按钮时,也会调用 IStiUSD::D iagnostic 方法 (Microsoft 提供的属性页) 。

以下示例演示 IStiUSD::D方法的 实现。

STDMETHODIMP CWIADevice::Diagnostic(LPSTI_DIAG pBuffer)
{
  //
  // If the caller did not pass in the correct parameters,
  // then fail the call with E_INVALIDARG.
  //

  if(!pBuffer){
     return E_INVALIDARG;
  }

  //
  // initialize response buffer
  //

  memset(&pBuffer->sErrorInfo,0,sizeof(pBuffer->sErrorInfo));

  pBuffer->sErrorInfo.dwGenericError = NOERROR;
  pBuffer->sErrorInfo.dwVendorError  = 0;

  HRESULT hr = S_OK;
  if(!TestMyDeviceFunctionalty()) {
    pBuffer->sErrorInfo.dwGenericError = E_FAIL; // win32 generic error code
    pBuffer->sErrorInfo.dwVendorError  = 1234;   // device specific vendor error code
  }
  return hr;
}