次の方法で共有


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 オペレーティング システムで使用できます。
ターゲット プラットフォーム デスクトップ
ヘッダー video.h (Video.h を含む)
ライブラリ Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

関連項目

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter