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 関数に関する情報を取得するには、ディスプレイ ミニポート ドライバーは、IoGetDeviceProperty に PhysicalDeviceObject を渡すことができます。
DxgkDdiRemoveDevice で、DxgkDdiAddDevice 中に割り当てたコンテキスト ブロックとその他のリソースを解放します。
DxgkDdiAddDevice 関数をページング可能にする必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
対象プラットフォーム | デスクトップ |
Header | dispmprt.h |
IRQL | PASSIVE_LEVEL |