Freigeben über


Updates für IddCx-Versionen 1.7 und höher

Auf dieser Seite werden die Änderungen beschrieben, die in IddCx 1.7 vorgenommen wurden. Eine einzige Indirekte Anzeigetreiber (IDD)-Binärdatei, die mit IddCx 1.7 erstellt wurde, kann unter Windows 10, Version 1803 und höher, ausgeführt werden, wobei durch Laufzeitprüfungen überprüft wird, ob DDI-Änderungen in IddCx 1.7 auf dem System verfügbar sind. Weitere Informationen finden Sie unter Erstellen eines WDF-Treibers für mehrere Versionen von Windows .

Die IddCx 1.7-Änderungen sind in die folgenden Kategorien unterteilt:

  • Die IddCxGetVersion wurde aktualisiert (Konsole und Remote). Eine vollständige Liste der Informationen zu IddCx-Versionen finden Sie unter IddCx-Versionen.
  • Ein verbesserter Mauscursor-DDI wurde hinzugefügt, der für Konsole und Remote verfügbar ist, aber nur bei Fernzugriff nützlich ist.
  • Das IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS Adapter-Flag wurde veraltet (Konsole und Remote).

Aktualisierung der IddCxGetVersion-Version

Die iddCx-Version, die von IddCxGetVersion unter Windows Server 2022 zurückgegeben wurde, wurde auf IDDCX_VERSION_IRON (0x1700) aktualisiert.

Aktualisierter Mauszeiger für Remotetreiber

Remote-IDDs in IddCx-Versionen vor 1.7 empfangen nur Mausupdates für prozedurale Cursorverschiebungen. Eine prozedurale Cursorverschiebung ist eine Positionsänderung, die durch einen API-Aufruf von einer Anwendung oder dem Betriebssystem auf dem Server verursacht wird, und nicht durch Mauseingaben, die von dem Remoteclient in die Remotesitzung eingefügt wurden. Dies führt zu einigen Problemen, die für Remotesitzungen einzigartig sind. Beispiel:

  1. In IddCx 1.6 und früheren Versionen kann der Remotetreiber nicht erkennen, ob ein API-Aufruf eine Mausposition zweimal auf dieselbe Position festgelegt hat.
  2. Eine Änderung des Cursor-Shapes oder der Sichtbarkeit kann nicht ohne gültige Position ausgelöst werden. Dies ist kein Problem bei Konsolen-IDDs. Wenn jedoch keine gültigen prozeduralen Positionsänderungen vorhanden waren, müsste der DDI für Remotetreiber einen Positionswert angeben, der dazu führen würde, dass der Cursor in den Client springt.

Um diese Probleme zu beheben, wurden die folgenden Änderungen ab IddCx 1.7 vorgenommen.

IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION Flag wurde hinzugefügt.

Das IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION Adapter-Flag wurde zu IDDCX_ADAPTER_FLAGS hinzugefügt, damit Remotetreiber alle Aktualisierungen der Mausposition empfangen können. Mit dieser Kennzeichnung kann ein Remotetreiber auf Adapterbasis angeben, dass er alle Cursorpositionsänderungen und nicht nur prozedurale Verschiebungen empfangen möchte. Dieses Kennzeichen ist nur gültig, wenn es mit IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVERkombiniert wird. IddCxAdapterInitAsync- schlägt fehl, wenn IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION ohne IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVERfestgelegt wird.

IddCxMonitorQueryHardwareCursor2 DDI wurde für die Cursor-Position hinzugefügt.

Die DDI IddCxMonitorQueryHardwareCursor2 stellt Informationen zur Cursorposition bereit. Dieser DDI gibt eine IDARG_OUT_QUERY_HWCURSOR2 Struktur zurück. Sowohl Remote- als auch Konsolentreiber können diesen DDI aufrufen, aber die Informationen in der IDARG_OUT_QUERY_HWCURSOR2 Struktur sind für Konsolentreiber nicht sehr relevant.

Die IDARG_OUT_QUERY_HWCURSOR2 Struktur gibt die folgenden zusätzlichen Cursorinformationen zurück:

  • Eine Positions-ID (PositionId)

    Vor IddCx 1.7 verwendet der Cursor DDI eine Shape-ID , damit der Treiber erkennen kann, ob sich das Shape seit der letzten Aktualisierung geändert hat. Ab IddCx 1.7 wurde eine Positions-ID hinzugefügt. Der Positions-ID-Wert ändert sich, wenn eine neue Cursorposition gemeldet wurde, auch wenn die X- und Y-Koordinaten der neuen Position mit der alten identisch sind.

  • Ein Positionsgültigkeitsindikator (PositionValid)

    PositionValid gibt an, ob die Cursorposition in der Cursorinformationsstruktur gültig ist. Dieses gültige Kennzeichen deckt die Felder "X", "Y " und "PositionId " ab. Wenn dieses Kennzeichen nicht festgelegt ist, können die Felder "X" und "PositionId" nicht verwendet werden.

IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS Kennzeichnung veraltet (Konsole und Remote)

Aufgrund von Änderungen in der Darstellung des Desktops werden ab IddCx 1.7 zum Zeitpunkt der Frame-Erstellung keine Verschiebungsregionen mehr bereitgestellt. Stattdessen enthält die beim Abrufen der Framezeit bereitgestellte schmutzige Rectsliste alle geänderten Bereiche des Bilds und IDDCX_METADATA. MoveRegionCount ist immer null.

Treiber können weiterhin das IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS Flag für IddCx 1.7 und höher festlegen, aber es hat keine Auswirkung. Wenn ein Treiber für die Ausführung auf Vor-IddCx 1.7-Versionen konzipiert ist und das Flag festlegt, muss dieser Treiber über die Logik zum Verarbeiten der Verschiebungen verfügen; andernfalls treten bei Benutzern visuelle Probleme auf, wenn Systeme unter Vor-IddCx 1.7 ausgeführt werden.