Bagikan melalui


Updates untuk IddCx versi 1.7 dan yang lebih baru

Halaman ini menjelaskan perubahan yang dibuat di IddCx 1.7. Biner driver tampilan tidak langsung tunggal (IDD) yang dibangun terhadap IddCx 1.7 dapat berjalan pada Windows 10, versi 1803 ke atas menggunakan pemeriksaan runtime untuk memverifikasi apakah perubahan DDI di IddCx 1.7 tersedia pada sistem tersebut. Lihat Membangun driver WDF untuk beberapa versi Windows untuk informasi selengkapnya.

Perubahan IddCx 1.7 termasuk dalam kategori berikut:

  • Versi IddCxGetVersion diperbarui (konsol dan jarak jauh). Lihat Versi IddCx untuk daftar lengkap informasi versi terkait IddCx.
  • DDI kursor mouse yang ditingkatkan ditambahkan (tersedia untuk konsol dan jarak jauh tetapi hanya berguna dari jarak jauh).
  • Bendera adaptor IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS tidak digunakan lagi (konsol dan jarak jauh).

Versi IddCxGetVersion yang diperbarui

Versi IddCx yang dikembalikan oleh IddCxGetVersion pada Windows Server 2022 diperbarui ke IDDCX_VERSION_IRON (0x1700).

Kursor mouse yang diperbarui untuk driver jarak jauh

IDD jarak jauh dalam versi IddCx sebelum 1.7 hanya menerima pembaruan mouse untuk gerakan kursor prosedural . Pemindahan kursor prosedural adalah perubahan posisi yang disebabkan oleh panggilan API dari aplikasi atau OS di server, dan bukan dengan input mouse yang disuntikkan ke sesi jarak jauh dari klien jarak jauh. Hal ini menyebabkan beberapa masalah yang unik untuk sesi jarak jauh. Contohnya:

  1. Di IddCx 1.6 dan yang lebih lama, driver jarak jauh tidak dapat mengetahui apakah panggilan API mengatur posisi mouse ke posisi yang sama dua kali.
  2. Perubahan bentuk kursor atau visibilitas tidak dapat dipicu tanpa posisi yang valid. Ini bukan masalah untuk IDD konsol. Namun, untuk driver jarak jauh, ketika belum ada perubahan posisi prosedural yang valid, DDI harus memberikan nilai posisi yang akan menyebabkan kursor melompat di klien.

Untuk mengatasi masalah ini, perubahan berikut dilakukan mulai dari IddCx 1.7.

bendera IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION ditambahkan

Bendera adaptor IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION ditambahkan ke IDDCX_ADAPTER_FLAGS untuk memungkinkan driver jarak jauh menerima semua pembaruan posisi mouse. Bendera ini memungkinkan driver jarak jauh untuk menunjukkan berdasarkan adaptor bahwa ia ingin menerima semua perubahan posisi kursor dan bukan hanya gerakan prosedural. Bendera ini hanya valid jika dikombinasikan dengan IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER. IddCxAdapterInitAsync akan gagal jika IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION diatur tanpa IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER.

IddCxMonitorQueryHardwareCursor2 DDI ditambahkan untuk posisi kursor

DDI IddCxMonitorQueryHardwareCursor2 menyediakan informasi posisi kursor. DDI ini mengembalikan struktur IDARG_OUT_QUERY_HWCURSOR2 . Driver jarak jauh dan konsol dapat memanggil DDI ini tetapi informasi dalam struktur IDARG_OUT_QUERY_HWCURSOR2 tidak terlalu relevan untuk driver konsol.

Struktur IDARG_OUT_QUERY_HWCURSOR2 mengembalikan informasi kursor tambahan berikut:

  • ID posisi (PositionId)

    Sebelum IddCx 1.7, kursor DDI menggunakan ID bentuk sehingga driver dapat mengetahui apakah bentuk telah berubah sejak pembaruan terakhir. Mulai iddCx 1.7, ID posisi ditambahkan. Nilai ID posisi berubah jika posisi kursor baru dilaporkan, bahkan jika koordinat X dan Y dari posisi baru sama dengan yang lama.

  • Bendera valid posisi (PositionValid)

    PositionValid menunjukkan kepada driver apakah posisi kursor dalam struktur informasi kursor valid. Bendera yang valid ini mencakup bidang X, Y , dan PositionId . Jika bendera ini tidak diatur, maka bidang X, Y , dan PositionId tidak dapat digunakan.

bendera IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS tidak digunakan lagi (konsol dan jarak jauh)

Karena perubahan dalam cara desktop dirender, mulai dari wilayah pemindahan IddCx 1.7 tidak akan lagi disediakan pada waktu jangka waktu yang diperoleh. Sebaliknya, daftar rekam jeda kotor yang disediakan pada waktu bingkai perolehan berisi semua wilayah gambar yang diubah dan IDDCX_METADATA. MoveRegionCount akan selalu nol.

Driver masih dapat mengatur bendera IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS untuk IddCx 1.7 ke atas tetapi tidak akan berpengaruh. Jika driver dirancang untuk berjalan pada pre-IddCx 1.7 dan mengatur bendera, driver tersebut harus memiliki logika untuk memproses pemindahan; jika tidak, pengguna akan melihat masalah visual saat berjalan pada sistem pra-IddCx 1.7.