共用方式為


USBCAMD2 Minidriver 作業

USBCAMD2 相機迷你驅動程式通常運作方式如下:

例如,若要使用 USBCAMD2 指定相機迷你驅動程式的其他回呼函式,相機迷你驅動程式會在 USBCAMD_DEVICE_DATA2 結構中指定其進入點。 minidriver 接著會呼叫 USBCAMD_InitializeNewInterface ,將初始化USBCAMD_DEVICE_DATA2結構傳遞至 USBCAMD2。 然後,USBCAMD2 會在必要時呼叫迷你驅動程式的回呼函式。

注意

只有在回溯相容性時,USBCAMD2 才支援 USBCAMD_DEVICE_DATA 結構。

minidriver 必須呼叫 USBCAMD_AdapterReceivePacket ,才能將它未處理的任何 SRB 傳送至 USBCAMD2 進行處理。

USBCAMD 程式庫回呼函 式描述迷你驅動程式所實作的回呼函式,以及它們是否為選擇性或必要。

下列程式清單說明傳送至相機迷你驅動程式之 SRB 的一般處理流程:

Minidriver 的SRB_INITIALIZE_DEVICE處理常式

元件 動作
數位相機迷你驅動程式 藉由呼叫 USBCAMD_InitializeNewInterface來初始化 USBCAMD2,指出影片或核心模式中的原始處理需求,例如啟用裝置事件。
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 取得 USB 裝置和設定描述元。
USBCAMD2 呼叫 minidriver 的 CamConfigureEx 回呼函式。
數位相機迷你驅動程式 完成組態。 選擇替代設定和傳輸大小上限。 填入 USBCAMD_Pipe_Config_Descriptor 結構的陣列。
USBCAMD2 剖析 USBCAMD_Pipe_Config_Descriptor 結構的陣列。
USBCAMD2 呼叫 minidriver 的 CamInitialize 回呼函式。
數位相機迷你驅動程式 完成初始化。 設定裝置電源,並在相機上啟用預設設定。
USBCAMD2 將資料流程數目和資料流程描述元大小提供給 stream.sys 類別驅動程式。

Minidriver 的SRB_GET_STREAM_INFO處理常式

元件 動作
數位相機迷你驅動程式 HW_STREAM_INFORMATION 資料流程資訊結構提供給 stream.sys 類別驅動程式。
數位相機迷你驅動程式 在類別驅動程式的 stream.sysHW_STREAM_HEADER 結構中 填入裝置屬性集陣列的指標。
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 填入資料流程標頭中的針腳數目。
USBCAMD2 如果有的話,請公開裝置事件資料表。
USBCAMD2 修正資料流程資訊表中的專案值。 設定類別名稱 (擷取或仍) 。
USBCAMD2 填入資料流程屬性陣列的指標。

Minidriver 的SRB_INITIALIZATION_COMPLETE處理常式

元件 動作
數位相機迷你驅動程式 使用 IRP_MJ_PNP 和 IRP_MN_QUERY_INTERFACE 取得 USBCAMD2 的GUID_USBCAMD_INTERFACE。

Minidriver 的SRB_GET_DEVICE_PROPERTY處理常式

元件 動作
數位相機迷你驅動程式 取得相機迷你驅動程式處理的屬性,例如 PROPSETID_VIDCAP_VIDEOPROCAMPPROPSETID_VIDCAP_CAMERACONTROLPROPSETID_VIDCAP_VIDEOCONTROL,以及任何其他自訂屬性集。

Minidriver 的SRB_SET_DEVICE_PROPERTY處理常式

元件 動作
數位相機迷你驅動程式 取得 PROPSETID_VIDCAP_VIDEOPROCAMPPROPSETID_VIDCAP_CAMERACONTROLPROPSETID_VIDCAP_VIDEOCONTROL和其他任何自訂屬性集的參數,以設定相機迷你驅動程式處理的屬性。

Minidriver 的SRB_GET_DATA_INTERSECTION處理常式

元件 動作
數位相機迷你驅動程式 KSDATARANGE結構傳回KSDATAFORMAT結構。
數位相機迷你驅動程式 檢查所要求的畫面播放速率 (VideoInfoHeader.AvgTimePerFrame) 是否在要求的視訊格式上限和下限內。 如果超過限制,minidriver 應該更正 pSrb-CommandData.IntersectInfo-Datarange >> 中的下列值:VideoInfoHeader.AvgTimePerFrame、VideoInfoHeader.dwBitRate。

Minidriver 的SRB_OPEN_STREAM處理常式

元件 動作
數位相機迷你驅動程式 確認視訊格式。
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 儲存相機迷你驅動程式所接受的視訊格式。
USBCAMD2 呼叫 minidriver 的 CamAllocateBandwidthEx 回呼函式,根據視訊格式資料配置頻寬,並取得視訊格式的最大緩衝區大小。
數位相機迷你驅動程式 計算符合所要求畫面播放速率和輸出視窗大小的等時通道封包大小上限。
數位相機迷你驅動程式 呼叫 USBCAMD_SelectAlternateInterface,以選擇最接近的替代設定。 迷你驅動程式應該為 USBCAMD2 提供相機所能產生的最大可能畫面大小。
數位相機迷你驅動程式 在相機上設定硬體縮放比例。 將相機控制項設定為登錄中的預存值,或第一次設定為預設設定。
數位相機迷你驅動程式 請確定視訊格式的畫面播放速率 (VideoInfoHeader.AvgTimePerFrame) 落在視訊格式的限制內,如果不符合,請加以更正。
USBCAMD2 呼叫 minidriver 的 CamStartCaptureEx 回呼函式。
數位相機迷你驅動程式 將硬體設定為擷取模式。
USBCAMD2 初始化等時或大量傳輸。

Minidriver 的SRB_CLOSE_STREAM處理常式

元件 動作
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 取消提交至 USBCAMD2 的擱置 IRP。 將任何暫止的資料 SRB 傳回 至stream.sys 類別驅動程式。
USBCAMD2 呼叫 minidriver 的 CamStopCaptureEx 回呼函式。
數位相機迷你驅動程式 將停止擷取命令傳送至相機。
USBCAMD2 如果適用,請呼叫 minidriver 的 CamFreeBandwidthEx 回 呼函式,以釋出不連續的匯流排頻寬。
數位相機迷你驅動程式 選取閒置替代設定。
USBCAMD2 釋放與 USB 管道相關聯的資源。

Minidriver 的SRB_UNINITIALIZE_DEVICE處理常式

元件 動作
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 如果有任何資料流程仍然開啟,請呼叫迷你驅動程式的 CamStopCaptureExCamFreeBandwidthEx 回呼函式來關閉它們。
USBCAMD2 呼叫迷你驅動程式的 CamUnInitialize 回 呼函式。
數位相機迷你驅動程式 清除並釋放資源。

Minidriver 的SRB_SURPRISE_REMOVAL處理常式

元件 動作
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 取消暫止的資料 SRB,並傳回具有STATUS_CANCELLED的 SRB。
USBCAMD2 在所有開啟的資料流程上呼叫迷你驅動程式的 CamStopCaptureExCamFreeBandwidthEx 回呼函式。
USBCAMD2 傳回SRB_SURPRISE_REMOVAL之後所關閉之任何讀取/寫入 SRB 上的STATUS_CANCELLED。

Minidriver 的SRB_SET_DATA_FORMAT處理常式

元件 動作
數位相機迷你驅動程式 確認新的視訊格式。
數位相機迷你驅動程式 呼叫 USBCAMD_SetVideoFormat
USBCAMD2 使用相關聯的資料流程延伸模組儲存新的格式。

Minidriver 從 Power ON 到 Power OFF 處理常式SRB_CHANGE_POWER_STATE

元件 動作
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 如果適用,請停止同步管道上的串流,或解除擱置的大量或中斷傳輸。
USBCAMD2 呼叫 minidriver 的 CamStopCaptureEx 回呼函式。
數位相機迷你驅動程式 將停止擷取命令傳送至硬體。

Minidriver 從 Power OFF 到 Power ON 處理常式SRB_CHANGE_POWER_STATE

元件 動作
數位相機迷你驅動程式 呼叫 USBCAMD_AdapterReceivePacket
USBCAMD2 如果適用,請在連續管道上重新開機串流,或重新提交大量或中斷傳輸至 USB 類別。
數位相機迷你驅動程式 將相機設定和相機耗電量還原為一般層級。
USBCAMD2 呼叫 minidriver 的 CamStopCaptureEx 回呼函式。
USBCAMD2 呼叫 minidriver 的 CamStartCaptureEx 回呼函式。