共用方式為


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 值表示從裝置到緩衝區的傳輸。

傳回值

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

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

備註

若要準備 DMA 傳輸作業, VideoPortStartDma

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

規格需求

需求
最低支援的用戶端 可在 Windows XP 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 video.h (包含 Video.h)
程式庫 Videoprt.lib
Dll Videoprt.sys
IRQL <=DISPATCH_LEVEL

另請參閱

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter