共用方式為


仍然影像裝置事件

如果軟體已要求這類通知, 仍為映像裝置事件 是一種裝置層級,應通知高階軟體。 使用者模式 minidriver 負責定義大部分的裝置事件,並在事件發生時傳遞通知。 一般而言,事件表示需要高階軟體才能執行某些動作。

典型的仍然影像裝置事件是偵測按下的按鈕。 例如,掃描器可能會為使用者提供個別的按鈕來起始掃描文字和相片。 按下按鈕時,需要高階軟體才能顯示或儲存影像。 仍然影像事件監視器會偵測到使用 IStiDevice COM 介面) (發生事件,而且可以使用 IStillImage COM 介面 呼叫先前註冊 (的仍映射應用程式) 。

仍會以 GUID 表示影像裝置事件。 在 sti.h 中,Microsoft 定義下列仍為影像裝置事件:

事件 GUID 用途
GUID_DeviceArrivedLaunch 仍在的映像裝置已連結至系統。
GUID_ScanImage 應該掃描到電腦中的影像。
GUID_ScanFaxImage 影像應該掃描到計算機,然後傳真。
GUID_ScanPrintImage 影像應該掃描到計算機,然後列印。
GUID_STIUserDefined1 已按下用戶可定義按鈕。
GUID_STIUserDefined2 已按下用戶可定義按鈕。
GUID_STIUserDefined3 已按下用戶可定義按鈕。

使用者模式迷你驅動程式的開發人員應該盡可能使用這些預先定義的事件 GUID。 如果這些 GUID 不適用,則必須定義裝置特定事件的 GUID。

若要定義仍為映像裝置事件,您必須:

  • 為每個事件指定 GUID。

  • 在使用者模式驅動程式的 INF 檔案中包含每個 GUID。

在驅動程式的 INF 檔案中,每個 GUID 規格都必須包含星號 (表示「所有應用程式」) 或特定應用程式的清單,指出事件發生時應該啟動哪些應用程式。 仍然影像事件監視器會使用此清單,將應用程式的預設指派提供給事件。 用戶可以使用掃描器和相機 控制台 來修改這些指派。

事件通知

驅動程式必須使用異步 I/O 或輪詢) 監視裝置 (,以判斷與每個 GUID 相關聯的事件何時發生。 根據裝置功能,驅動程式可以異步或響應輪詢裝置的要求,通知用戶端發生裝置事件。 所有能夠透過任一方法 () 傳遞裝置事件通知的驅動程式,都必須在裝置的 STI_DEV_CAPS結構中 設定STI_GENCAP_NOTIFICATIONS旗標。 支援輪詢而非異步通知的驅動程式也必須在相同的結構中設定STI_GENCAP_POLLING_NEEDED旗標。 (也必須使用 INF 檔案中的 Capabilities 關鍵詞來指出 仍為 image devices.)

如果驅動程序支援事件的異步通知,事件監視器會呼叫 IStiUSD::SetNotificationHandle 來要求通知,並提供事件句柄。 發生裝置事件時,驅動程式必須呼叫 SetEvent (查看 Microsoft Windows SDK 檔) ,並使用事件句柄做為自變數來通知事件監視器。 然後用戶端可以呼叫 IStiUSD::GetNotificationData 以取得事件的 GUID。

如果需要輪詢,事件監視器會呼叫 IStiUSD::GetStatus 來輪詢驅動程式,進而輪詢裝置並傳回 STI_DEVICE_STATUS 結構的結果。