コールバック関数DXGKCB_EXCLUDE_ADAPTER_ACCESS (dispmprt.h)

DxgkCbExcludeAdapterAccess 関数は、この保護された状態にある間、ディスプレイ アダプターへのすべてのアクセスを禁止し、指定された DxgkProtectedCallback コールバック ルーチンを呼び出します。

構文

DXGKCB_EXCLUDE_ADAPTER_ACCESS DxgkcbExcludeAdapterAccess;

NTSTATUS DxgkcbExcludeAdapterAccess(
  [in] HANDLE DeviceHandle,
  [in] ULONG Attributes,
  [in] DXGKDDI_PROTECTED_CALLBACK DxgkProtectedCallback,
  [in] PVOID ProtectedCallbackContext
)
{...}

パラメーター

[in] DeviceHandle

ディスプレイ アダプターを表すハンドル。 ディスプレイ ミニポート ドライバーは、DxgkDdiStartDevice に渡されたDXGKRNL_INTERFACE構造体の DeviceHandle メンバーでこのハンドルを取得しました。

[in] Attributes

ビデオ メモリ操作を示す 値です。 このパラメーターは、DXGK_EXCLUDE_EVICT_ALLとDXGK_EXCLUDE_CALL_SYNCHRONOUSが相互に排他的である点を除き、次のビット フラグ値の任意の組み合わせにすることができます。 これらの値は Dispmprt.h で定義されています。

DXGK_EXCLUDE_EVICT_ALL

アダプター内のすべてのビデオ メモリがシステム メモリにコピーされます。これは高価な操作です。 Attributes パラメーターがこの値に設定されていない場合、システム メモリ内のロックされたサーフェスへのアクセスは中断されます。

DXGK_EXCLUDE_CALL_SYNCHRONOUS

呼び出し元と同じスレッド コンテキストで、保護 された DxgkProtectedCallback ドライバー コールバック ルーチンを実行します。 呼び出し元は、 第 2 レベル または 第 3 レベル の同期 DDI 呼び出しからを呼び出している必要があります。 それ以外の場合、 DxgkCbExcludeAdapterAccess 関数は失敗します。

DXGK_EXCLUDE_BRIDGE_ACCESS

ドライバーがルート ポート構成領域にアクセスする必要がある場合に、PCI Express (PCIe) ルート ポートへのアクセスを保護します。 DataType パラメーターを DXGK_WHICHSPACE_BRIDGE に設定して DxgkCbReadDeviceSpace 関数または DxgkCbWriteDeviceSpace 関数を呼び出す前に、Attributes パラメーターをこの値に設定します。

[in] DxgkProtectedCallback

アダプターへのすべてのアクセスが停止したときに呼び出されるコールバック ルーチン。

[in] ProtectedCallbackContext

DxgkProtectedCallback コールバック ルーチンの ProtectedCallbackContext パラメーターに渡す値へのポインター。

戻り値

DxgkCbExcludeAdapterAccess は、成功した場合STATUS_SUCCESSを返します。 それ以外の場合は、 Ntstatus.h で定義されているエラー コードのいずれかを返します。

注釈

アプリケーション要求は、この関数が戻るまでブロックされます。 この保護状態では、指定 された DxgkProtectedCallback コールバック ルーチンが IRQL = PASSIVE_LEVELで呼び出されます。

DxgkCbExcludeAdapterAccess は、ディスプレイ アダプターとすべてのリンクに対するグラフィックス関連の I/O 操作を防ぐために、排他的なアダプター アクセスを取得します。 これにより、呼び出しの期間中、GPU が実質的にアイドル状態になります。

また、この関数は 、attributes パラメーターに DXGK_EXCLUDE_BRIDGE_ACCESSが指定されている場合、PCI Express (PCIe) ルート ポートへのすべての PCI 構成領域アクセスを防止します。

ドライバーは、 DxgkProtectedCallback コールバック ルーチンが返されるのを待って、呼び出し元のスレッドの継続的な実行をブロックしないでください。 たとえば、ドライバーは、コールバック ルーチンを処理する非同期ワーカー スレッドをスケジュールできます。

このアプリケーション要求のブロックの例外は、ユーザー モードディスプレイ ドライバーが pfnLockCb 関数の呼び出しでD3DDDICB_LOCKFLAGS構造体の Flags メンバーに UseAlternateVA ビットフィールド フラグを設定した場合に発生します。 DxgkCbExcludeAdapterAccess は、この種類の割り当てロックをブロックせず、保護されたコールバック ルーチンの実行中に CPU がディスプレイ アダプターにアクセスできます。

メモUseAlternateVApfnLockCb の呼び出しで設定されている場合、ディスプレイ ミニポート ドライバーは DxgkCbExcludeAdapterAccess を呼び出さないでください。
 

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header dispmprt.h (Dispmprt.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

DxgkProtectedCallback