Share via


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 エラー コードを返す必要があります。 「解説」を参照してください。

Remarks

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

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

Windows 10 バージョン 1903 以降では、ユーザーへの影響 (IddCx によるドライバーのバグチェックの待機に費やされた時間など) を減らすために、EvtIddCxMonitorAssignSwapChainSTATUS_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 は、新しいレンダー アダプターに新しいスワップチェーンを作成し、エラーを回避できます。 このエラー コードはバージョン 1903 以降Windows 10定義されていますが、ID ドライバーは以前の OS リリースでこのエラー コードを返す可能性があり、その結果効果はありません。

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

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

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー Windows Server 2016
対象プラットフォーム Windows
ヘッダー iddcx.h
IRQL requires_same

こちらもご覧ください

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN