共用方式為


USBCAMD2 迷你驅動程式作業

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

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

備註

在USBCAMD2中,USBCAMD_DEVICE_DATA 結構只支持作為回溯相容性之用。

迷你驅動程式必須呼叫 USBCAMD_AdapterReceivePacket 來傳送它未處理的任何 SRB 給 USBCAMD2 進行處理。

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

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

迷你驅動程式的 SRB_INITIALIZE_DEVICE 處理常式

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

迷你驅動程式的 SRB_GET_STREAM_INFO 處理常式

元件 行動
相機迷你驅動程式 HW_STREAM_INFORMATION 資料流程資訊結構提供給 stream.sys 類別驅動程式。
相機迷你驅動程式 在類別驅動程式的HW_STREAM_HEADER結構中填入指向裝置屬性集陣列的stream.sys指標。
相機迷你驅動程式 打電話給 USBCAMD_AdapterReceivePacket
USBCAMD2 填寫串流標頭中的針腳數目。
USBCAMD2 公開裝置事件資料表 (如果有的話)。
USBCAMD2 修正串流資訊表中的項目值。 設定類別名稱(擷取或靜態)。
USBCAMD2 填入流屬性陣列的指標。

迷你驅動程式的 SRB_INITIALIZATION_COMPLETE 處理常式

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

迷你驅動程式的 SRB_GET_DEVICE_PROPERTY 處理程式

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

迷你驅動程式的SRB_SET_DEVICE_PROPERTY處理常式

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

微型驅動程式的SRB_GET_DATA_INTERSECTION處理程序

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

迷你驅動程式的SRB_OPEN_STREAM處理常式

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

迷你驅動程式的SRB_CLOSE_STREAM處理常式

元件 行動
相機迷你驅動程式 打電話給 USBCAMD_AdapterReceivePacket
USBCAMD2 取消提交給USBCAMD2的擱置 IRP。 將任何擱置的資料 SRB 傳回給 stream.sys 類別驅動程式。
USBCAMD2 呼叫迷你驅動程式的 CamStopCaptureEx 回呼函式。
相機迷你驅動程式 向相機發送停止拍攝命令。
USBCAMD2 呼叫迷你驅動程式的 CamFreeBandwidthEx 回呼函式,以釋放同步匯流排頻寬 (如果適用)。
相機迷你驅動程式 選取閒置替代設定。
USBCAMD2 與 USB 管道相關的免費資源。

迷你驅動程式的 SRB_UNINITIALIZE_DEVICE 處理程序

元件 行動
相機迷你驅動程式 打電話給 USBCAMD_AdapterReceivePacket
USBCAMD2 如果任何資料流程仍處於開啟狀態,請針對每個資料流程呼叫迷你驅動程式的 CamStopCaptureExCamFreeBandwidthEx 回呼函式來關閉它們。
USBCAMD2 呼叫迷你驅動程式的 CamUnInitialize 回呼函式。
相機迷你驅動程式 清理和釋放資源。

迷你驅動程式的 SRB_SURPRISE_REMOVAL 處理程序

元件 行動
相機迷你驅動程式 打電話給 USBCAMD_AdapterReceivePacket
USBCAMD2 取消正在擱置的數據 SRB 並將狀態設為 STATUS_CANCELLED 的 SRB 傳回。
USBCAMD2 在所有開啟的資料流程上呼叫迷你驅動程式的 CamStopCaptureExCamFreeBandwidthEx 回呼函式。
USBCAMD2 在 SRB_SURPRISE_REMOVAL 之後任何下降的讀取/寫入 SRB 上返回 STATUS_CANCELLED。

迷你驅動程式的SRB_SET_DATA_FORMAT處理常式

元件 行動
相機迷你驅動程式 驗證新的視訊格式。
相機迷你驅動程式 呼叫 USBCAMD_SetVideoFormat
USBCAMD2 儲存具有相關聯的串流延伸模組的新格式。

迷你驅動器的SRB_CHANGE_POWER_STATE從電源開啟到電源關閉的處理程序

元件 行動
相機迷你驅動程式 打電話給 USBCAMD_AdapterReceivePacket
USBCAMD2 如果適用,請停止在同步管道上串流,或取消擱置的大量或中斷傳輸。
USBCAMD2 呼叫迷你驅動程式的 CamStopCaptureEx 回呼函式。
相機迷你驅動程式 將停止捕獲命令發送到硬件。

迷你驅動程式的 SRB_CHANGE_POWER_STATE 從電源關閉到電源開啟的處理常式

元件 行動
相機迷你驅動程式 打電話給 USBCAMD_AdapterReceivePacket
USBCAMD2 如果適用,請在同步管道上重新啟動串流,或重新提交大量或中斷傳輸至 USB 類別。
相機迷你驅動程式 將相機設定和相機功耗恢復到正常水平。
USBCAMD2 呼叫迷你驅動程式的 CamStopCaptureEx 回呼函式。
USBCAMD2 呼叫迷你驅動程式的 CamStartCaptureEx 回呼函式。