次の方法で共有


EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN コールバック関数 (iddcx.h)

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN は、アダプター上のモニターのモード変更を間接的なディスプレイ ドライバー (IDD) に通知するために OS によって呼び出されます。

構文

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN EvtIddCxMonitorAssignSwapchain;

NTSTATUS EvtIddCxMonitorAssignSwapchain(
  [in] IDDCX_MONITOR MonitorObject,
  [in] const IDARG_IN_SETSWAPCHAIN *pInArgs
)
{...}

パラメーター

[in] MonitorObject

モード変更の影響を受けたモニターを識別するために OS によって使用される、ドライバーによって作成された不透明なIDDCX_MONITOR ハンドル。

[in] pInArgs

間接スワップチェーンの設定に使用するドライバーの情報を含む IDARG_IN_SETSWAPCHAIN 構造体へのポインター。

戻り値

(NTSTATUS)操作が成功した場合、コールバック関数はSTATUS_SUCCESSを返すか、NT_SUCCESS(status) が TRUE の別の状態値を返す必要があります。 エラーが発生した場合、エラーが再び発生しない可能性が高い場合、IDD は STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN を返す必要があります。 それ以外の場合は、適切な NTSTATUS エラー コードが返されます。 「解説」を参照してください。

備考

OS は EvtIddCxMonitorAssignSwapChain 呼び出して、IDD がそのフレーム処理メカニズムをセットアップできるようにします。 たとえば、IDD は、D3D デバイスを初期化し、フレームの処理をループする新しいスレッドを作成する場合があります (ID ドライバーのサンプルを参照)。

EvtIddCxMonitorAssignSwapChain が成功を返した場合、IDD は IDARG_IN_SETSWAPCHAIN.hSwapChain オブジェクトを所有し、WdfObjectDelete呼び出して、フレームの処理を停止したときにスワップチェーン オブジェクトを解放します。 スワップチェーン処理は、EvtIddCxMonitorUnassignSwapChain呼び出されたとき、または成功が EvtIddCxMonitorAssignSwapChain に返された後にフレーム処理ループでエラーが発生した場合に、フレームの処理を停止できます。 これは、コンソール ID アダプターとリモート ID アダプターとすべての IddCx バージョンの両方に適用されます。

Windows 10 バージョン 1903 以降では、ユーザーへの影響を軽減するために (たとえば、IddCx がドライバーのバグチェックを待機するのに費やされた時間)、EvtIddCxMonitorAssignSwapChain STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN以外のエラー コードを報告 場合、IddCx はドライバーを直ちにバグチェックします。

ドライバーが STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAINを返した場合、IddCx はデスクトップ コンポジターに通知します。 新しいスワップチェーンを作成する必要があるため、OS は EvtIddCxMonitorAssignSwapChain 再度呼び出します。 ID ドライバーは、発生したエラーが再び発生しない可能性が高い場合にのみ、このリターン コードを使用する必要があります。 つまり、ID ドライバーは、エラー コードを返したが、同じエラーが再び発生しないようにするために何もしなかったため、使用できないデスクトップをユーザーに残さないでください。 たとえば、ドライバーがレンダー アダプターで D3D デバイスの作成中にエラーが発生した場合、IddCxAdapterSetRenderAdapter呼び出して別のアダプター (おそらく別の GPU または WARP) に変更し、STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN返す可能性があります。 OS は新しいレンダー アダプターに新しいスワップチェーンを作成し、エラーを回避できます。 このエラー コードは Windows 10 バージョン 1903 以降で定義されていますが、ID ドライバーは以前の OS リリースでこのエラー コードを返す可能性があり、影響はありません。

スワップチェーン内のサーフェスの解像度は、常にターゲット モードセットと同じ解像度になります。

サーフェスの形式は、ドライバーでサポートされている形式のいずれかになりますが、取得した各バッファーの形式は、フレームからフレームにサポートされている形式の間で変更できます。 ドライバーは、取得した各バッファーの形式を確認する必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows 10
サポートされる最小サーバー Windows Server 2016
ターゲット プラットフォーム ウィンドウズ
ヘッダー iddcx.h
IRQL requires_same

関連項目

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN