共用方式為


通知專案樹狀結構變更的應用程式

WIA 裝置的迷你驅動程式必須能夠通知與 WIA 裝置相關聯的應用程式對裝置專案樹狀結構所做的任何變更。 例如,如果應用程式顯示顯示相機上圖片縮圖的使用者介面,WIA 迷你驅動程式應該能夠通知應用程式的使用者介面,以顯示使用者已經刪除的圖片縮圖。

下列 IWiaMiniDrv::d rvDeviceCommand方法的範例實作示範 WIA minidriver 如何回應 WIA 服務所傳送的命令,並將命令傳遞至裝置。 WIA 迷你驅動程式發出命令給裝置之後,minidriver 會通知應用程式裝置專案樹狀結構已變更。 在此實作中,方法會判斷 WIA 服務已發出 「Take Picture」 命令 (WIA_CMD_TAKE_PICTURE) 。 方法會在根專案上呼叫 TakePicture 方法, (裝置) 的專案,並通知任何連線的應用程式專案樹狀結構現在包含新圖片。 (WIA_CMD_TAKE_PICTURE 和TakePicture都會在檔Microsoft Windows SDK中說明。) minidriver 藉由呼叫wiasQueueEvent函式來執行此動作。

請注意,當 minidriver 傳送指出樹狀結構已更新的事件時, 所有 接聽的應用程式都會收到變更的通知,而不只是呼叫端。 例如,如果使用者開啟相機的 [總管] 檢視,並使用 Microsoft 小畫家 取得新的圖片,[總管] 視窗也會在到達時顯示新的圖片,因為它會接聽這類事件。

下列範例示範 IWiaMiniDrv::d rvDeviceCommand 方法的實作。

HRESULT _stdcall CWIADevice::drvDeviceCommand(
  BYTE        *pWiasContext,
  LONG        lFlags,
  const GUID  *plCommand,
  IWiaDrvItem **ppWiaDrvItem,
  LONG        *plDevErrVal)
{
  //
  // If the caller did not pass in the correct parameters, 
  // then fail the call and return E_INVALIDARG.
  //

  if ((!pWiasContext)||(!plDevErrVal)||(!plCommand)) {
    return E_INVALIDARG;
  }

  *plDevErrVal = 0;
  HRESULT hr = E_NOTIMPL;

  //
  //  Check which command was issued
  //

  if (*plCommand == WIA_CMD_TAKE_PICTURE) {

    //
    // process command here
    //

      hr = HARDWARE_SNAP_PHOTO();
  }
  return hr;
}