Mises à jour pour IddCx versions 1.7 et ultérieures
Cette page décrit les modifications apportées dans IddCx 1.7. Un seul binaire de pilote d’affichage indirect (IDD) créé sur IddCx 1.7 peut s’exécuter sur Windows 10, version 1803 et ultérieures à l’aide de vérifications d’exécution pour vérifier si les modifications DDI dans IddCx 1.7 sont disponibles sur ce système. Pour plus d’informations, consultez Création d’un pilote WDF pour plusieurs versions de Windows .
Les modifications d’IddCx 1.7 appartiennent aux catégories suivantes :
- La version d’IddCxGetVersion a été mise à jour (console et remote). Consultez Versions d’IddCx pour obtenir la liste complète des informations sur les versions liées à IddCx.
- Un DDI de curseur de souris amélioré a été ajouté (disponible pour la console et à distance, mais uniquement utile à partir de remote).
- L’indicateur d’adaptateur IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS a été déprécié (console et remote).
Version d’IddCxGetVersion mise à jour
La version d’IddCx retournée par IddCxGetVersion sur Windows Server 2022 a été mise à jour vers IDDCX_VERSION_IRON (0x1700).
Curseur de souris mis à jour pour les pilotes distants
Les IDD distants dans les versions d’IddCx antérieures à la version 1.7 reçoivent uniquement les mises à jour de la souris pour les déplacements de curseurs procéduraux . Un déplacement de curseur procédural est un changement de position provoqué par un appel d’API à partir d’une application ou du système d’exploitation sur le serveur, et non par une entrée de souris injectée dans la session à distance à partir du client distant. Cela entraîne certains problèmes propres aux sessions à distance. Par exemple :
- Dans IddCx 1.6 et versions antérieures, le pilote distant ne peut pas savoir si un appel d’API a défini une position de souris à la même position deux fois.
- Une modification de la forme ou de la visibilité du curseur ne peut pas être déclenchée sans une position valide. Ce n’est pas un problème pour les ID de console. Pour les pilotes distants, toutefois, lorsqu’il n’y a pas eu de changement de position procédurale valide, la DDI doit donner une valeur de position qui entraînerait un saut du curseur dans le client.
Pour résoudre ces problèmes, les modifications suivantes ont été apportées à partir de IddCx 1.7.
IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION indicateur a été ajouté
L’indicateur d’adaptateur IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION a été ajouté à IDDCX_ADAPTER_FLAGS pour permettre aux pilotes distants de recevoir toutes les mises à jour de position de la souris. Cet indicateur permet à un pilote distant d’indiquer sur la base d’un adaptateur qu’il souhaite recevoir toutes les modifications de position du curseur et pas seulement les mouvements procéduraux. Cet indicateur n’est valide qu’en cas de combinaison avec IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER. IddCxAdapterInitAsync échoue si IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION est défini sans IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER.
IddCxMonitorQueryHardwareCursor2 DDI a été ajouté pour la position du curseur
Le DDI IddCxMonitorQueryHardwareCursor2 fournit des informations sur la position du curseur. Cette DDI retourne une structure IDARG_OUT_QUERY_HWCURSOR2 . Les pilotes distants et de console peuvent appeler cette DDI, mais les informations contenues dans la structure IDARG_OUT_QUERY_HWCURSOR2 ne sont pas très pertinentes pour les pilotes de console.
La structure IDARG_OUT_QUERY_HWCURSOR2 retourne les informations de curseur supplémentaires suivantes :
ID de position (PositionId)
Avant IddCx 1.7, le curseur DDI utilise un ID de forme afin que le pilote puisse savoir si la forme a changé depuis la dernière mise à jour. À compter de IddCx 1.7, un ID de position a été ajouté. La valeur de l’ID de position change si une nouvelle position de curseur a été signalée, même si les coordonnées X et Y de la nouvelle position sont identiques à l’ancienne.
Indicateur de position valide (PositionValid)
PositionValid indique au pilote si la position du curseur dans la structure d’informations du curseur est valide. Cet indicateur valide couvre les champs X, Y et PositionId . Si cet indicateur n’est pas défini, les champs X, Y et PositionId ne peuvent pas être utilisés.
indicateur IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS déconseillé (console et distant)
En raison des modifications apportées à la façon dont le bureau est rendu, à partir de IddCx 1.7, les régions de déplacement ne seront plus fournies au moment de l’acquisition. Au lieu de cela, la liste sale rects fournie au moment de l’acquisition contient toutes les régions modifiées de l’image et IDDCX_METADATA.MoveRegionCount est toujours égal à zéro.
Les pilotes peuvent toujours définir l’indicateur IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS pour IddCx 1.7 et versions ultérieures, mais cela n’aura aucun effet. Si un pilote est conçu pour s’exécuter sur la version antérieure à IddCx 1.7 et définit l’indicateur, ce pilote doit avoir la logique pour traiter les déplacements ; sinon, les utilisateurs verront des problèmes visuels lors de l’exécution sur des systèmes pré-IddCx 1.7.