次の方法で共有


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 メッセージによってエラーが示されます。

  1. 0x3
  2. 内部スケジューラ データ構造へのポインター
  3. 内部スケジューラ データ構造へのポインター
  4. 内部スケジューラ データ構造へのポインター
DxgkDdiPatch ページング可能にする必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
ターゲット プラットフォーム デスクトップ
ヘッダー d3dkmddi.h
IRQL PASSIVE_LEVEL

関連項目

DXGKARG_PATCH

DxgkDdiAddDevice