共用方式為


傳輸模式

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

靜止影像事件監視器會在狀態模式下開啟裝置。 通常 (但並非總是如此) 影像 擷取 API 會以資料模式開啟裝置。

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

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

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

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

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

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

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