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 nicht transparentes, vom Treiber erstelltes IDDCX_MONITOR Handle, das vom Betriebssystem verwendet wird, um den Monitor zu identifizieren, der von der Modusänderung betroffen ist.

[in] pInArgs

Zeiger auf eine IDARG_IN_SETSWAPCHAIN-Struktur , die Informationen enthält, die der Treiber zum Festlegen der indirekten Swapchain verwenden soll.

Rückgabewert

(NTSTATUS) Wenn der Vorgang erfolgreich ist, muss die Rückruffunktion STATUS_SUCCESS oder einen anderen status Wert zurückgeben, für den NT_SUCCESS(status) gleich TRUE ist. Wenn ein Fehler auftritt, sollte die IDD STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN zurückgeben, wenn die Wahrscheinlichkeit besteht, dass der Fehler nicht erneut auftritt. Andernfalls sollte ein entsprechender NTSTATUS-Fehlercode zurückgegeben werden. Siehe Hinweise.

Hinweise

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

Wenn EvtIddCxMonitorAssignSwapChain erfolgreich zurückgibt, besitzt die IDD dann das IDARG_IN_SETSWAPCHAIN.hSwapChain-Objekt und ist für den Aufruf von WdfObjectDelete verantwortlich, um das Swapchain-Objekt 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 EvtIddCxMonitorAssignSwapChain zurückgegeben wurde. Dies gilt für Konsolen- und Remote-ID-Adapter sowie für alle IddCx-Versionen.

Ab Windows 10 Version 1903 wird iddCx sofort einen Fehler überprüfen, wenn EvtIddCxMonitorAssignSwapChain einen anderen Fehlercode als STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN meldet.

Wenn der Treiber STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN zurückgibt, informiert IddCx den Desktopkompositor. Eine neue Swapchain muss erstellt werden, damit das Betriebssystem erneut EvtIddCxMonitorAssignSwapChain aufruft. Ein ID-Treiber sollte diesen Rückgabecode nur verwenden, wenn die Wahrscheinlichkeit besteht, dass der gerade aufgetretene Fehler nicht erneut auftritt. Das heißt, ein ID-Treiber sollte Benutzern keinen nicht verwendbaren Desktop überlassen, da er den Fehlercode zurückgegeben hat, aber nichts getan hat, um sicherzustellen, dass derselbe Fehler nicht erneut auftritt. Wenn ein Treiber beispielsweise beim Erstellen des D3D-Geräts auf dem Renderadapter einen Fehler auftritt, kann er IddCxAdapterSetRenderAdapter aufrufen, um in einen anderen Adapter (vielleicht eine andere GPU oder WARP) zu wechseln und dann STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN zurückzugeben. Das Betriebssystem erstellt eine neue Swapchain für den neuen Renderadapter und vermeidet den Fehler hoffentlich. Obwohl dieser Fehlercode ab Windows 10 Version 1903 definiert ist, kann ein ID-Treiber diesen Fehlercode bei 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 vom Treiber unterstützten Formate, aber das Format jedes abgerufenen Puffers kann zwischen den unterstützten Formaten von Frame zu Frame wechseln. Der Treiber sollte das Format jedes abgerufenen Puffers überprüfen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10
Unterstützte Mindestversion (Server) Windows Server 2016
Zielplattform Windows
Kopfzeile iddcx.h
IRQL requires_same

Weitere Informationen

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN