Bagikan melalui


Masalah Windows Display Driver Model (WDDM) 64-bit

Untuk memungkinkan aplikasi 32-bit berjalan pada sistem operasi 64-bit, driver tampilan mode pengguna 32-bit harus disediakan selain driver tampilan mode pengguna 64-bit yang diperlukan aplikasi 64-bit. Namun, hanya driver miniport tampilan versi 64-bit yang diperlukan pada sistem operasi 64-bit. Windows pada Windows (WOW64) memungkinkan aplikasi 32-bit berjalan pada sistem operasi 64-bit. Untuk informasi selengkapnya, lihat Mendukung I/O 32-Bit di Driver 64-Bit Anda.

Untuk menginstal driver tampilan mode pengguna 32-bit pada sistem operasi 64-bit, entri berikut harus diatur di bagian add-registri file INF untuk driver miniport tampilan perangkat grafis. Ini harus terjadi sehingga nama DLL driver tampilan mode pengguna 32-bit ditambahkan ke registri selama penginstalan driver:

 [Xxx_SoftwareDeviceSettings]
...
 HKR,, UserModeDriverNameWow, %REG_MULTI_SZ%, Xxx.dll
...

File INF harus berisi informasi untuk mengarahkan sistem operasi untuk menyalin driver tampilan mode pengguna 32-bit ke direktori %systemroot%\SysWOW64 sistem. Untuk informasi selengkapnya, lihat Bagian Inf CopyFiles Directive dan INF DestinationDirs.

Karena WOW64 tidak dapat memproses struktur data buram atau tidak terjenis seperti struktur D3DDDICB_ALLOCATE yang diteruskan melalui fungsi pfnAllocateCb , itu tidak dapat melakukan konversi otomatis dari 32 bit ke 64 bit. Oleh karena itu, agar WOW64 berfungsi dengan benar, Anda harus mempertimbangkan item berikut saat menulis driver tampilan mode pengguna 32-bit untuk berjalan pada sistem operasi 64-bit:

  • Hindari pointer atau jenis data yang sensitif terhadap beberapa sistem operasi, seperti, SIZE_T atau HANDLE. Seiring dengan membuat ukuran seluruh variabel struktur, jenis data lebar variabel ini membuat perataan dan posisi masing-masing anggota berbeda. Jika anggota lebar variabel tidak dapat ditolak, Anda dapat menambahkan anggota lain untuk menunjukkan bahwa struktur data berasal dari driver tampilan mode pengguna 32-bit. Driver miniport tampilan 64-bit kemudian dapat melakukan konversi dengan benar.

  • Bahkan jika anggota lebar variabel tidak ada, Anda mungkin perlu mempertimbangkan persyaratan penyelarasan khusus arsitektur. Misalnya, pada x64, UINT64 (atau QWORD) harus selaras 8 byte. Karena driver tampilan mode pengguna 32-bit yang dikompilasi oleh pengkompilasi 32-bit standar mungkin tidak menyelaraskan jenis 64-bit asli ini dengan benar, driver miniport tampilan 64-bit mungkin tidak dapat mengakses data secara akurat dari driver tampilan mode pengguna 32-bit. Namun, Anda dapat memaksa penyelarasan dengan menggunakan arahan kompilator pragma yang sesuai. Meskipun menggunakan arahan kompilator pragma dapat menyebabkan sedikit pemborosan ruang pada sistem operasi 32-bit, ini memungkinkan Anda menggunakan driver tampilan mode pengguna 32-bit yang identik pada sistem operasi 32-bit dan 64-bit. Jika Anda tidak dapat memaksa penyelarasan dengan menggunakan arahan kompilator pragma yang sesuai, driver tampilan mode pengguna 32-bit yang berjalan menggunakan WOW64 pada sistem operasi 64-bit harus berbeda dari driver tampilan mode pengguna 32-bit yang berjalan pada sistem operasi 32-bit.