共用方式為


靜態影像裝置事件

靜止影像裝置事件是裝置上層級發生的事件,如果該軟體已要求這類通知,則應通知上層軟體。 使用者模式迷你驅動程式負責定義大部分的裝置事件,並在事件發生時傳遞通知。 一般而言,事件表示需要上層軟體來執行某些動作。

典型的靜止影像裝置事件是偵測到按鈕被按下。 例如,掃描器可能會為使用者提供個別的按鈕來起始掃描文字和相片。 按下按鈕時,將需要上層軟體來顯示或儲存影像。 靜止影像事件監視器會偵測事件已發生 (使用 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。

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

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

事件通知

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

如果驅動程式支援事件的非同步通知,事件監視器會呼叫 IStiUSD::SetNotificationHandle 來要求通知並提供事件控制碼。 當裝置事件發生時,驅動程式必須呼叫 SetEvent (請參閱 Microsoft Windows SDK 檔) ,以使用事件控制碼作為引數來通知事件監視器。 用戶端接著可以呼叫 IStiUSD::GetNotificationData 來取得事件的 GUID。

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