Freigeben über


EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN Rückruffunktion (iddcx.h)

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN wird vom Betriebssystem aufgerufen, um den indirekten Anzeigetreiber (IDD) über eine Modusänderung für Monitore auf dem Adapter zu informieren.

Syntax

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN EvtIddCxMonitorAssignSwapchain;

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

Parameter

[in] MonitorObject

Ein undurchsichtiger, vom Treiber erstellter IDDCX_MONITOR Handle, der vom Betriebssystem verwendet wird, um den Monitor zu identifizieren, der von der Änderung des Modus betroffen ist.

[in] pInArgs

Zeigen Sie auf eine IDARG_IN_SETSWAPCHAIN Struktur, die Informationen für den Treiber enthält, die zum Festlegen der indirekten Swapchain verwendet werden sollen.

Rückgabewert

(NTSTATUS) Wenn der Vorgang erfolgreich ist, muss die Rückruffunktion STATUS_SUCCESS oder einen anderen Statuswert zurückgeben, für den NT_SUCCESS(Status) WAHR ist. Wenn ein Fehler auftritt, sollte die IDD STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN zurückgeben, wenn die Gefahr besteht, dass der Fehler nicht erneut auftritt. Andernfalls sollte ein entsprechender NTSTATUS- Fehlercode zurückgegeben werden. Siehe Anmerkungen.

Bemerkungen

Das Betriebssystem ruft EvtIddCxMonitorAssignSwapChain auf, damit die IDD ihren Frameverarbeitungsmechanismus einrichten kann. Beispielsweise kann eine IDD einen neuen Thread erstellen, um D3D-Geräte zu initialisieren und dann eine Schleife auf Verarbeitungsframes durchzuführen (siehe ID-Treiberbeispiel).

Wenn EvtIddCxMonitorAssignSwapChain Erfolg zurückgibt, besitzt die IDD dann das objekt IDARG_IN_SETSWAPCHAIN.hSwapChain und ist dafür verantwortlich, WdfObjectDelete aufzurufen, um das Swapchainobjekt freizugeben, wenn die Verarbeitung von Frames beendet wird. Die Swapchainverarbeitung kann die Verarbeitung von Frames beenden, wenn EvtIddCxMonitorUnassignSwapChain aufgerufen wird oder wenn ein Fehler in der Frameverarbeitungsschleife auftritt, nachdem der Erfolg an EvtIddCxMonitorAssignSwapChainzurückgegeben wird. Dies gilt sowohl für Konsolen- als auch Remote-ID-Adapter und alle IddCx-Versionen.

Ab Windows 10, Version 1903, um die Auswirkungen der Benutzer zu verringern (z. B. zeitaufwendige Wartezeit auf iddCx auf Fehlerüberprüfung des Treibers), wird iddCx sofort fehlerchecken, wenn EvtIddCxMonitorAssignSwapChain einen anderen Fehlercode als STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAINmeldet.

Wenn der Treiber STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAINzurückgibt, informiert IddCx den Desktopkompositor. Es muss eine neue Swapchain erstellt werden, sodass das Betriebssystem erneut EvtIddCxMonitorAssignSwapChainaufruft. Ein ID-Treiber sollte diesen Rückgabecode nur verwenden, wenn eine gute Chance besteht, dass der soeben aufgetretene Fehler nicht mehr auftritt. Das heißt, ein ID-Treiber sollte Benutzer nicht mit einem unbrauchbaren Desktop belassen, da er den Fehlercode zurückgegeben hat, um sicherzustellen, dass derselbe Fehler nicht mehr auftritt. Wenn ein Treiber beispielsweise beim Erstellen des D3D-Geräts auf dem Renderadapter einen Fehler auftritt, kann er IddCxAdapterSetRenderAdapter aufrufen, um zu einem anderen Adapter (z. B. einer anderen GPU oder WARP) zu wechseln und dann STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAINzurückzugeben. Das Betriebssystem erstellt eine neue Swapchain auf dem neuen Renderadapter und vermeidet hoffentlich den Fehler. Obwohl dieser Fehlercode ab Windows 10, Version 1903, definiert ist, kann ein ID-Treiber diesen Fehlercode in früheren Betriebssystemversionen zurückgeben, was zu keiner Auswirkung führt.

Die Auflösung der Oberflächen in der Swapchain entspricht immer der Auflösung des festgelegten Zielmodus.

Das Format der Oberflächen ist eines der Formate, die vom Treiber unterstützt werden, aber das Format jedes abgerufenen Puffers kann sich zwischen den von Frame zu Frame unterstützten Formaten ändern. Der Treiber sollte das Format der abgerufenen Puffer überprüfen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10
mindestens unterstützte Server- Windows Server 2016
Zielplattform- Fenster
Header- iddcx.h
IRQL- requires_same

Siehe auch

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN