共用方式為


VideoPortStartDma 函式 (video.h)

VideoPortStartDma 函式會準備 DMA 作業的系統。 一旦提供適當的資源,VideoPortStartDma 會建立散佈/收集清單、初始化系統資源,並呼叫視訊迷你埠驅動程式提供的 HwVidExecuteDma 例程來執行 DMA 作業。

語法

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortStartDma(
  [in]      IN PVOID           HwDeviceExtension,
  [in]      IN PVP_DMA_ADAPTER VpDmaAdapter,
  [in]      IN PVOID           Mdl,
  [in]      IN ULONG           Offset,
  [in, out] IN OUT PULONG      pLength,
  [in]      IN PEXECUTE_DMA    ExecuteDmaRoutine,
  [in]      IN PVOID           Context,
  [in]      IN BOOLEAN         WriteToDevice
);

參數

[in] HwDeviceExtension

迷你埠驅動程式裝置延伸模組的指標。

[in] VpDmaAdapter

表示總線主要配接器之 VP_DMA_ADAPTER 結構的指標。 這個結構是從呼叫videoPortGetDmaAdapter 傳回。

[in] Mdl

描述緩衝區之 MDL 的指標。 此指標會從對視訊埠驅動程式的 VideoPortLockBuffer 函式呼叫傳回。

[in] Offset

指定 DMA 作業開始之緩衝區中的位元移。 Mdl 參數描述這個緩衝區。

[in, out] pLength

變數的指標,指定要求的傳輸大小,以位元組為單位,且將接收要傳輸的實際大小。 發生下列其中一個事件時,將會更新變數:VideoPortStartDma 傳回或 HwVidExecuteDma。 因此,即使在 VideoPortStartDma 傳回之前,從 HwVidExecuteDma 讀取此變數是安全的。

[in] ExecuteDmaRoutine

迷你埠驅動程式提供的指標 HwVidExecuteDma 回呼例程。 VideoPortStartDma 呼叫此例程,以程式設計硬體緩存器並啟動實際的 DMA 作業。

[in] Context

要傳遞至迷你埠驅動程式 HwVidExecuteDma 回呼例程之驅動程式決定內容的指標。 由於 HwVidExecuteDma 回呼例程會在DISPATCH_LEVEL執行,因此 Context 指向的數據應該位於非分頁記憶體中。

[in] WriteToDevice

指定 DMA 傳輸的方向。 TRUE 的值 表示從緩衝區到裝置的傳輸,而 false 的值 FALSE 表示從裝置到緩衝區的傳輸。

傳回值

VideoPortStartDma 會傳回下列其中一個狀態代碼:

傳回碼 描述
NO_ERROR 作業已成功執行。
ERROR_NOT_ENOUGH_MEMORY 此作業沒有足夠的系統資源。

言論

若要準備 DMA 傳輸作業,VideoPortStartDma

  • 排清主機處理器快取中的記憶體區域。
  • 建置散佈/收集清單。
  • 呼叫視訊迷你埠驅動程式的 HwVidExecuteDma 回呼。
並非所有要求的數據都已傳輸,因為傳輸的實際記憶體數量受限於驅動程式可用的地圖緩存器數目。 此函式的呼叫端應該檢查在 pLength 傳回的實際傳輸大小,以判斷是否要傳輸其他數據。 若是如此,迷你埠驅動程序應該呼叫 VideoPortStartDma (之後,VideoPortCompleteDma)視需要多次滿足整個傳輸要求。

要求

要求 價值
最低支援的用戶端 適用於 Windows XP 和更新版本的 Windows作系統。
目標平臺 桌面
標頭 video.h (include Video.h)
連結庫 Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

另請參閱

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter