DXGKDDI_PATCH コールバック関数 (d3dkmddi.h)
DxgkDdiPatch 関数は、DMA バッファーがグラフィックス ハードウェアに送信される前に、指定されたダイレクト メモリ アクセス (DMA) バッファーに物理アドレスを割り当てます。
構文
DXGKDDI_PATCH DxgkddiPatch;
NTSTATUS DxgkddiPatch(
[in] IN_CONST_HANDLE hAdapter,
[in] IN_CONST_PDXGKARG_PATCH pPatch
)
{...}
パラメーター
[in] hAdapter
ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 ディスプレイ ミニポート ドライバーは、DxgkDdiAddDevice 関数の出力パラメーター ミニポートDeviceContext の Microsoft DirectX グラフィックス カーネル サブシステムにこのハンドルを提供しました。
[in] pPatch
物理アドレスで修正プログラムを適用する DMA バッファーを記述する DXGKARG_PATCH 構造体へのポインター。
戻り値
正常に完了したときに STATUS_SUCCESS を返します。 ドライバーが代わりにエラー コードを返す場合は、オペレーティング システムによってシステムのバグチェックが発生します。 詳細については、次の「解説」セクションを参照してください。
備考
DxgkDdiPatch 関数は、DMA バッファーに物理アドレスを割り当てる必要があります。 したがって、ディスプレイ ミニポート ドライバーが DMA バッファーを生成するとき、ドライバーは、物理アドレスを処理するために必要な命令を挿入する DMA バッファー内の領域が使用可能であることを確認する必要があります。 物理アドレスは、ビデオ メモリ、AGP/PCI Express メモリ、またはシステム メモリに対応している可能性があることに注意してください。
ドライバーは、物理アドレスで修正プログラムを適用する必要がある DMA バッファー内の場所を識別するために、pPatch パラメーターによって指される DXGKARG_PATCH 構造体の pPatchLocationList メンバーで指定されたパッチの場所の一覧を調べる必要があります。 指定された割り当てリスト (DXGKARG_PATCH の pAllocationList メンバーによって指定されます) には、ビデオ メモリ マネージャーによって生成される物理アドレスも含まれます。 ドライバーの DxgkDdiPatch 関数の呼び出しは、DMA バッファーがグラフィックス処理装置 (GPU) に送信される前に、ドライバーが DMA バッファーの内容を変更する最後の機会です。 DMA バッファーが割り込まれるシナリオでは、ドライバーで DMA バッファーに複数回パッチを適用できることに注意してください。
ドライバーは、DMA バッファーの末尾にあるフェンス コマンドにDXGKARG_PATCHのメンバー SubmissionFenceId で指定された値に修正プログラムを適用できます。 このメンバーの詳細については、「フェンス識別子の の指定を参照してください。
ドライバーからエラー コードが返された場合、Microsoft DirectX グラフィックス カーネル サブシステムによってシステムバグチェックが発生します。 クラッシュ ダンプ ファイルでは、次の 4 つのパラメーターを持つ BugCheck 0x119 メッセージによってエラーが示されます。
- 0x3
- 内部スケジューラ データ構造へのポインター
- 内部スケジューラ データ構造へのポインター
- 内部スケジューラ データ構造へのポインター
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |
関連項目
DxgkDdiAddDevice の