次の方法で共有


IddCx オブジェクト

IddCx (間接ディスプレイ ドライバー クラス eXtension) は、拡張可能な UMDF オブジェクト モデルを使用して間接ディスプレイ デバイスのコンポーネントを表します。 UMDF オブジェクト モデルを使用すると、ドライバー固有のストレージを各 IddCx (そのため UMDF) オブジェクトに関連付けられます。 詳細については、 「UMDF のオブジェクト モデル」 を参照してください。

IDD オブジェクトの作成順序は次のとおりです。

  • ドライバーは、最初に IDDCX_ADAPTER オブジェクトを作成します。
  • その後、ドライバーによって IDDCX_MONITOR オブジェクトが作成されます。
  • IDDCX_ADAPTERIDDCX_MONITOR オブジェクトが作成されると、OS は IDDCX_SWAPCHAINIDDCX_OPMCTX オブジェクトを作成し、それらをドライバーに送信します。

以下のシナリオは、こうしたオブジェクトの詳細を示しています。

IDDCX_ADAPTER

このオブジェクトは、2 段階のプロセスでドライバーによって作成された 1 つの論理表示アダプターを表します。

IDD モデルには、明示的な破棄アダプター コールバックがありません。 アダプターの初期化シーケンスが正常に完了すると、初期化時に渡された UMDF デバイスが停止するまで、アダプターは有効です。 アダプターを作成するときに、ドライバーは、間接ディスプレイ アダプターに関する静的なアダプター情報を提供します。

多機能デバイスの処理

最も単純なケースでは、接続された間接ディスプレイ デバイスのプラグ アンド プレイ サブシステムによって作成された UMDF デバイス オブジェクトと、間接ディスプレイ ドライバー (IDD) が作成する IDDCX_ADAPTER オブジェクトの間に 1 対 1のマッピングがあります。

1 つの間接ディスプレイ ドングルに複数のプラグ アンド プレイ デバイスが含まれている場合、より複雑なシナリオが発生する可能性があります。 たとえば、間接表示ソリューションには、マイク (オーディオ ドライバー) やカメラ (ビデオ ドライバー) などの複数の PnP デバイス機能がある場合があります。 このような状況では、各 PnP デバイス用に作成された複数の UMDF デバイス オブジェクトに対して 1 つの IDDCX_ADAPTER オブジェクトを作成するのは IDD の責任です。 このシナリオでは、ドライバーは次の点を考慮する必要があります。

  • IDDCX_ADAPTER は、間接表示ソリューションを構成するすべての PnP デバイスが正常に開始された後にのみ作成する必要があります。
  • ドライバーは、アダプターの作成時に 1 つの WDFDEVICE を渡す必要があります。そのため、渡す UMDF デバイスを決定するロジックが必要です。
  • 間接ディスプレイ アダプターを構成するデバイスにハードウェア エラーがある場合、ドライバーは、アダプターを構成するすべてのデバイスをエラーとして報告する必要があります。

IDDCX_MONITOR

このオブジェクトは、間接ディスプレイ アダプターのコネクタのいずれかに接続されている特定のモニターを表します。

ドライバーは、次の 2 段階のプロセスでモニター オブジェクトを作成します。

  • 最初に IddCxMonitorCreate コールバックを呼び出して、 IDDCX_MONITOR オブジェクトを作成します。
  • 次に、 IddCxMonitorArrival コールバックを呼び出して、モニターの到着を完了します。

モニターが取り外されると、ドライバーは IddCxMonitorDeparture コールバックを呼び出して、モニターが取り外されたことを報告します。これにより、 IDDCX_MONITOR オブジェクトが破棄されます。 同じモニターが接続されていない状態で再接続された場合でも、 IddCxMonitorDeparture/IddCxMonitorArrival シーケンスを再度呼び出す必要があります。

IDDCX_MONITOR は、 IDDCX_ADAPTER オブジェクトの子です。

IDDCX_SWAPCHAIN

このオブジェクトは、接続されたモニターに表示するデスクトップ イメージを提供する スワップチェーン を表します。 スワップチェーンには複数のバッファーがあり、IDD が別のバッファーにアクセスしている間に OS が 1 つのバッファー内の次のデスクトップ イメージを構成できるようにします。 IDDCX_SWAPCHAINIDDCX_MONITOR の子であるため、特定のモニターに割り当てられるスワップチェーンはいつでも 1 つだけです。

OS は、 IDDCX_SWAPCHAIN オブジェクトを作成して破棄し、 EvtIddCxMonitorAssignSwapChainEvtIddCxMonitorUnassignSwapChain Ddi 呼び出しを使用して、それらをモニターに割り当てる/割り当て解除します。

IDDCX_OPMCTX

このオブジェクトは、アプリケーションが 1 つのモニターで出力保護を制御するために使用できる、単一のアプリケーション OPM コンテキストからのアクティブな Output Protection Manager (OPM) コンテキストを表します。 複数のOPMコンテキストを特定のモニターで同時にアクティブにすることができます。 OS は、ドライバーの EvtIddCxMonitorOPMCreateProtectedOutput および EvtIddCxMonitorOPMDestroyProtectedOutput DDI 呼び出しを使用して、OPM コンテキストを作成および破棄するためにドライバーを呼び出します。