次の方法で共有


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

DxgkDdiAddDevice 関数は、ディスプレイ アダプターのコンテキスト ブロックを作成し、ディスプレイ アダプターを表すハンドルを返します。

構文

DXGKDDI_ADD_DEVICE DxgkddiAddDevice;

NTSTATUS DxgkddiAddDevice(
  [in]  IN_CONST_PDEVICE_OBJECT PhysicalDeviceObject,
  [out] OUT_PPVOID MiniportDeviceContext
)
{...}

パラメーター

[in] PhysicalDeviceObject

ディスプレイ アダプターを識別する物理デバイス オブジェクト (PDO) へのポインター。

[out] MiniportDeviceContext

PhysicalDeviceObject によって識別されるディスプレイ アダプターを表す、ディスプレイ ミニポート ドライバーによって作成されたハンドルを受け取る変数へのポインター。 ディスプレイ ミニポート ドライバーは、このパラメーターで NULL を返して、physicalDeviceObject で識別されるディスプレイ アダプターサポートしないことを示すことができます。

戻り値

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

備考

DxgkDdiAddDevice 関数は、physicalDeviceObject によって識別されるディスプレイ アダプターに関連付けられているプライベート コンテキスト ブロック割り当てます。 ミニポートDeviceContext で返されるハンドルは、ディスプレイ アダプターのハンドルとして、またはディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドルと考えることができます。 DirectX グラフィックス カーネル サブシステム (Dxgkrnl.sys) は、ディスプレイ ミニポート ドライバーへの後続の呼び出しでハンドルを提供します。 次の一覧では、ディスプレイ ミニポート ドライバーによって実装される関数にハンドルを渡す Dxgkrnl.sys のさまざまなコンポーネントの例を示します。

  • 表示ポート ドライバーは、DxgkDdiStartDevice 関数の ミニポートDeviceContext パラメーターのハンドルを提供します。

  • VidPN マネージャーは、DxgkDdiIsSupportedVidPn 関数の hAdapter パラメーターにハンドルを提供します。

  • DirectX グラフィックス コアは、DxgkDdiQueryAdapterInfo 関数の hAdapter パラメーターにハンドルを提供します。

ハンドルがミニポートDeviceContext 名前が付けられ、hAdapter 名前が付けられている場合があるという事実に混同しないでください。 また、このハンドルを、特定のディスプレイ ミニポート ドライバー関数に渡される hDevice パラメーターと混同しないでください。

DxgkDdiAddDevice は、一度に 1 つのデバイスに対してシリアルで呼び出されます。 その動作は、WDM カーネル モード ドライバーの標準 DRIVER_ADD_DEVICE コールバックと同じです。

一部のディスプレイ・アダプター・カードには、ディスプレイ・アダプターの役割を果たす 2 つ以上の PCI 機能があります。 たとえば、特定の古いカードでは、ビューごとに個別の PCI 関数を使用して複数のビューを実装します。 表示ポート ドライバー DxgkDdiAddDevice、これらの PCI 関数ごとに 1 回呼び出します。この時点で、ディスプレイ ミニポート ドライバーは PCI 関数をサポートしているか (ミニポートDeviceContext を 0 以外の値に設定) するか、PCI 関数をサポートしていないことを示すことができます (ミニポートDeviceContext を NULL に設定します)。 特定の PCI 関数に関する情報を取得するには、ディスプレイ ミニポート ドライバーは、IoGetDevicePropertyPhysicalDeviceObject 渡すことができます。

DxgkDdiRemoveDeviceで、コンテキスト ブロックと、DxgkDdiAddDevice 中に割り当てるその他のリソース解放します。

DxgkDdiAddDevice 関数はページング可能にする必要があります。

必要条件

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

関連項目

DxgkDdiRemoveDevice

DxgkDdiStartDevice