傳輸模式

仍然影像介面會定義兩種傳輸模式 - 狀態模式 和資料 模式。 當 IStillImage COM 介面的用戶端呼叫 IStillImage::CreateDevice 以取得仍然映射裝置的存取權時,它會指定一個 (或兩者) 傳輸模式。 多個用戶端可以在狀態模式中開啟裝置,但一次只能有一個用戶端以資料模式開啟裝置。

仍然影像事件監視器會以狀態模式開啟裝置。 映射擷取 API通常會以資料模式開啟裝置,但並非一定如此。

用戶端在資料模式中開啟裝置之後,事件監視器會將後續 仍影像裝置事件 儲存在內部佇列中。 如果用戶端呼叫 IStiDevice::Subscribe,則可以呼叫 IStiDevice::GetLastNotificationData,從佇列讀取事件。 用戶端關閉裝置之後,後續收到的事件會導致事件監視器再次嘗試啟動已註冊的應用程式。

這兩種傳輸模式的意義完全取決於裝置的使用者模式迷你驅動程式。 IStillImageIStiDevice介面允許以任一模式呼叫所有方法。

迷你驅動程式可以藉由呼叫 IStiDevice::GetLastNotificationData來判斷其開啟的模式。 如果用戶端在取得裝置的存取權時只要求狀態模式,迷你驅動程式應該禁止用戶端執行資料傳輸。

請務必注意,裝置通常會在狀態模式中開啟相當長的時間 (例如,事件監視器會監看裝置事件) ,而裝置在資料模式中開啟的時間相對較短 (例如,若要在影像中讀取) 。 雖然仍然映射架構一次只允許一個用戶端以資料模式開啟裝置,但驅動程式可能需要進一步限制裝置存取。

例如,如果您要為連線到序列埠的裝置撰寫驅動程式,則如果裝置以狀態模式開啟,您可能會想要從驅動程式的IStiUSD::LockDevice方法內呼叫CreateFile。 這會禁止其他應用程式使用埠 (,這可能會在從裝置取得狀態資訊時) 支援其他裝置。

對於連線到專用埠的裝置,例如 SCSI 或 USB 匯流排裝置,通常允許從IStiUSD::Initialize內呼叫CreateFile,前提是指定狀態模式,因為裝置和埠一律會專用於一個用戶端。

當裝置在資料模式中開啟時,通常會從IStiUSD:Initialize內呼叫CreateFile,與匯流排類型無關。