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