次の方法で共有


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というメッセージによって示されます。

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

要件

要件
サポートされている最小のクライアント Windows Vista
対象プラットフォーム デスクトップ
Header d3dkmddi.h
IRQL PASSIVE_LEVEL

こちらもご覧ください

DXGKARG_PATCH

DxgkDdiAddDevice