SRB_OPEN_STREAM

類別驅動程式會傳送此要求來開啟數據流。

傳回值

minidriver 應該將下列其中一項設定為 SRB 中的狀態:

STATUS_SUCCESS
表示命令成功完成。

STATUS_NOT_IMPLEMENTED
表示 minidriver 不支援函式。

STATUS_TOO_MANY_NODES
表示沒有足夠的資源可開啟此數據流。

STATUS_IO_DEVICE_ERROR
表示發生硬體失敗。

註解

類別驅動程式會在 pSrb-StreamObject 中提供HW_STREAM_OBJECT緩衝區,並將 pSrb-StreamObject-StreamNumber>>> 設定為要開啟的數據流數目。 pSrb 指標指向HW_STREAM_REQUEST_BLOCK結構。 StreamNumber 會對應至minidriver在 HW_STREAM_DESCRIPTOR結構內 數據流的位移,以回應 SRB_GET_STREAM_INFO 要求。 類別驅動程式會指定開啟數據流應該在 pSrb-CommandData-OpenFormat >> 中提供的數據格式。

當 minidriver 收到此要求時,應該判斷目前是否可以開啟指定的數據流。 minidriver 也應該確認傳入 的 KSDATAFORMAT 格式。SRB 的 OpenFormat 字段。 如果可以開啟數據流,迷你驅動程式會更新HW_STREAM_OBJECT結構,並傳回STATUS_SUCCESS。 如果串流實例數目上限已開啟,或開啟此數據流所需的硬體資源無法使用,minidriver 會傳回適當的錯誤狀態。

當 minidriver 收到SRB_OPEN_STREAM命令時,minidriver 應該:

  1. 檢查數據流實例數目上限尚未超過,且數據流索引值是否有效。

  2. 檢查所要求的數據格式是否對這個數據流有效。

  3. 設定數據流的格式。

  4. 維護裝置延伸模組中所有數據流擴充結構的陣列,以便從任何數據流取消 IRP。

  5. 在數據流物件中,指定數據流數據處理程式和控制處理程式的指標。

  6. 如果裝置將直接對傳入 ReceiveDataPacket 例程的數據緩衝區地址執行 DMA,請在數據流物件中設定 DMA 旗標。 如果驅動程式存取使用邏輯尋址傳入的數據緩衝區,也會在數據流物件中設定 PIO 旗標。

  7. 如果數據流上提供時鐘支援,請透過數據流物件中的 HwClockObject 成員來指出這一點。