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

戻り値

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

注釈

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

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

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

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

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

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

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

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

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

要件

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

こちらもご覧ください

DxgkDdiRemoveDevice

DxgkDdiStartDevice