Updates für IddCx-Versionen 1.7 und höher
Auf dieser Seite werden die in IddCx 1.7 vorgenommenen Änderungen beschrieben. Eine einzelne IDD-Binärdatei (Indirect Display Driver), die für IddCx 1.7 erstellt wurde, kann unter Windows 10, Version 1803 und höher ausgeführt werden, indem Laufzeitüberprüfungen verwendet werden, um zu überprüfen, ob DDI-Änderungen in IddCx 1.7 auf diesem System verfügbar sind. Weitere Informationen finden Sie unter Erstellen eines WDF-Treibers für mehrere Versionen von Windows .
Die IddCx 1.7-Änderungen fallen in die folgenden Kategorien:
- Die IddCxGetVersion-Version wurde aktualisiert (Konsole und Remote). Eine vollständige Liste der IddCx-bezogenen Versionsinformationen finden Sie unter IddCx-Versionen .
- Ein verbesserter Mauscursor-DDI wurde hinzugefügt (verfügbar für Konsolen und Remote, aber nur von Remote aus nützlich).
- Das IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS-Adapterflag wurde veraltet (Konsole und Remote).
Aktualisierte IddCxGetVersion-Version
Die iddCx-Version, die von IddCxGetVersion unter Windows Server 2022 zurückgegeben wurde, wurde auf IDDCX_VERSION_IRON (0x1700) aktualisiert.
Mauscursor für Remotetreiber aktualisiert
Remote-IDDs in IddCx-Versionen vor 1.7 erhalten nur Mausupdates für prozedurale Cursorverschiebungen. Eine prozedurale Cursorverschiebung ist eine Positionsänderung, die durch einen API-Aufruf einer Anwendung oder des Betriebssystems auf dem Server und nicht durch Mauseingaben verursacht wird, die vom Remoteclient in die Remotesitzung eingefügt werden. Dies führt zu einigen Problemen, die nur für Remotesitzungen gelten. Beispiel:
- In IddCx 1.6 und früher kann der Remotetreiber nicht erkennen, ob durch einen API-Aufruf eine Mausposition zweimal auf dieselbe Position festgelegt wird.
- Eine Änderung der Cursorform oder der Sichtbarkeit kann ohne eine gültige Position nicht ausgelöst werden. Dies ist kein Problem für Konsolen-IDDs. Wenn es jedoch für Remotetreiber keine gültigen prozeduralen Positionsänderungen gab, müsste der DDI einen Positionswert angeben, der den Cursor zum Springen im Client führen würde.
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-Adapterflag wurde IDDCX_ADAPTER_FLAGS hinzugefügt, damit Remotetreiber alle Mauspositionsupdates empfangen können. Dieses Flag ermöglicht es einem Remotetreiber, auf Adapterbasis anzugeben, dass er alle Cursorpositionsänderungen und nicht nur prozedurale Verschiebungen empfangen möchte. Dieses Flag ist nur gültig, wenn es mit IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER kombiniert wird. IddCxAdapterInitAsync schlägt fehl, wenn IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION ohne IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER festgelegt ist.
IddCxMonitorQueryHardwareCursor2 DDI für Cursorposition hinzugefügt
IddCxMonitorQueryHardwareCursor2 DDI stellt Cursorpositionsinformationen 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 Form-ID , damit der Treiber wissen kann, ob sich das Shape seit dem letzten Update 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 gültiges Positionsflag (PositionValid)
PositionValid gibt dem Treiber an, ob die Cursorposition in der Cursorinformationsstruktur gültig ist. Dieses gültige Flag deckt die Felder X, Y und PositionId ab. Wenn dieses Flag nicht festgelegt ist, können die Felder X, Y und PositionId nicht verwendet werden.
IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS Flag veraltet (Konsole und Remote)
Aufgrund von Änderungen in der Art und Weise, wie der Desktop gerendert wird, werden ab IddCx 1.7 verschiebte Regionen zum Zeitpunkt des Abrufrahmens nicht mehr bereitgestellt. Stattdessen enthält die modifiziert Rects-Liste, die zum Zeitpunkt des Abrufrahmens bereitgestellt wird, 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 Auswirkungen. Wenn ein Treiber für die Ausführung vor IddCx 1.7 konzipiert ist und das Flag festlegt, muss dieser Treiber über die Logik zum Verarbeiten der Verschiebungen verfügen. Andernfalls werden Benutzern visuelle Probleme angezeigt, wenn sie auf Vor-IddCx 1.7-Systemen ausgeführt werden.