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 関数の MiniportDeviceContext 出力パラメーターの 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 |
対象プラットフォーム | デスクトップ |
Header | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |