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 は、次のいずれかの状態コードを返します。

リターン コード 説明
NO_ERROR 操作は正常に実行されました。
ERROR_NOT_ENOUGH_MEMORY この操作には十分なシステム リソースがありません。

注釈

DMA 転送操作を準備するには、 VideoPortStartDma:

  • ホスト プロセッサのキャッシュ内のメモリ領域をフラッシュします。
  • 散布図/収集リストを作成します。
  • ビデオ ミニポート ドライバーの HwVidExecuteDma コールバックを呼び出します。
転送されるメモリの実際の量はドライバーが使用できるマップ レジスタの数によって制限されるため、要求されたすべてのデータが転送されていない可能性があります。 この関数の呼び出し元は、 pLength で返される実際の転送サイズを調べて、追加のデータが転送されたままかどうかを判断する必要があります。 その場合、ミニポート ドライバーは、転送要求全体を満たすために必要な回数だけ VideoPortStartDma (その後 、VideoPortCompleteDma) を呼び出す必要があります。

要件

要件
サポートされている最小のクライアント Windows XP 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header video.h (Video.h を含む)
Library Videoprt.lib
[DLL] Videoprt.sys
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter