Обновления для IddCx версии 1.7 и более поздних
На этой странице описаны изменения, внесенные в IddCx 1.7. Двоичный файл драйвера непрямого отображения (IDD), созданный для IddCx 1.7, может выполняться в Windows 10 версии 1803 и выше с помощью проверок среды выполнения, чтобы убедиться, что изменения DDI в IddCx 1.7 доступны в этой системе. Дополнительные сведения см. в статье Создание драйвера WDF для нескольких версий Windows .
Изменения IddCx 1.7 делятся на следующие категории:
- Обновлена версия IddCxGetVersion (консольная и удаленная). Полный список сведений о версиях, связанных с IddCx, см. в разделе Версии IddCx .
- Добавлен улучшенный DDI курсора мыши (доступен для консоли и удаленного доступа, но полезен только из удаленного репозитория).
- Флаг адаптера IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS не рекомендуется (консольный и удаленный).
Обновленная версия IddCxGetVersion
Версия IddCx, возвращенная IddCxGetVersion в Windows Server 2022, была обновлена до IDDCX_VERSION_IRON (0x1700).
Обновлен курсор мыши для удаленных драйверов
Удаленные идентификаторы в версиях IddCx до версии 1.7 получают обновления мыши только для процедурных перемещений курсоров. Процедурное перемещение курсора — это изменение положения, вызванное вызовом API из приложения или ОС на сервере, а не вводом с помощью мыши, внедренным в удаленный сеанс с удаленного клиента. Это приводит к некоторым проблемам, которые являются уникальными для удаленных сеансов. Пример:
- В IddCx 1.6 и более ранних версиях удаленный драйвер не может определить, устанавливает ли вызов API одну и ту же позицию мыши дважды.
- Изменение фигуры курсора или видимости не может быть активировано без допустимой позиции. Это не проблема с идентификаторами консоли. Однако для удаленных драйверов, если нет допустимых изменений в процедурном положении, DDI должен будет присвоить значение позиции, которое приведет курсор к переходу в клиент.
Чтобы устранить эти проблемы, начиная с IddCx 1.7 были внесены следующие изменения.
добавлен флаг IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION
Флаг адаптера IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION добавлен в IDDCX_ADAPTER_FLAGS , чтобы разрешить удаленным драйверам получать все обновления положения мыши. Этот флаг позволяет удаленному драйверу указывать на основе адаптера, что он хочет получать все изменения положения курсора, а не только процедурные перемещения. Этот флаг действителен только в сочетании с IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER. IddCxAdapterInitAsync завершится ошибкой , если IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION задан без IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER.
IddCxMonitorQueryHardwareCursor2 DDI добавлен для положения курсора
DDI IddCxMonitorQueryHardwareCursor2 предоставляет сведения о положении курсора. Этот DDI возвращает структуру IDARG_OUT_QUERY_HWCURSOR2 . Как удаленные драйверы, так и драйверы консоли могут вызывать этот DDI, но сведения в IDARG_OUT_QUERY_HWCURSOR2 структуре не очень актуальны для драйверов консоли.
Структура IDARG_OUT_QUERY_HWCURSOR2 возвращает следующие дополнительные сведения о курсоре:
Идентификатор позиции (PositionId)
До версии IddCx 1.7 DDI курсора использовал идентификатор фигуры , чтобы драйвер смог узнать, изменилась ли фигура с момента последнего обновления. Начиная с IddCx 1.7, добавлен идентификатор позиции. Значение идентификатора позиции изменяется, если сообщалось о новой позиции курсора, даже если координаты X и Y новой позиции совпадают со старой.
Допустимый флаг позиции (PositionValid)
PositionValid указывает драйверу, является ли допустимое положение курсора в структуре сведений о курсоре. Этот допустимый флаг охватывает поля X, Y и PositionId . Если этот флаг не задан, нельзя использовать поля X, Y и PositionId .
IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS флаг не рекомендуется (консольный и удаленный)
Из-за изменений в способе отрисовки рабочего стола, начиная с IddCx 1.7 области перемещения больше не будут предоставляться во время получения кадра. Вместо этого список грязное rects, предоставляемый в момент получения, содержит все измененные области изображения и IDDCX_METADATA.MoveRegionCount всегда будет иметь нулевое значение.
Драйверы по-прежнему могут устанавливать флаг IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS для IddCx 1.7 и более поздних версий, но это не будет действовать. Если драйвер предназначен для запуска в предварительной версии IddCx 1.7 и устанавливает флаг , этот драйвер должен иметь логику для обработки перемещений; В противном случае пользователи будут видеть визуальные проблемы при запуске в системах, предшествующих IddCx 1.7.