Struktur DEVMODEW
Struktur DEVMODEW adalah versi Unicode dari struktur DEVMODE, yang dijelaskan dalam dokumentasi Microsoft Windows SDK. (Akhiran 'W' pada DEVMODEW adalah singkatan dari karakter "wide", atau Unicode.) Meskipun aplikasi dapat menggunakan salah satu struktur, driver diperlukan untuk menggunakan struktur DEVMODEW daripada struktur DEVMODE.
Anggota Publik dan Privat
Segera mengikuti anggota yang ditentukan struktur DEVMODEW (sering disebut sebagai anggota DEVMODEW publiknya), mungkin ada sekumpulan anggota yang ditentukan driver (anggota DEVMODEW privatnya). Gambar berikut menunjukkan bagian publik (struktur DEVMODEW aktual itu sendiri) dan bagian privat.
Biasanya, anggota privat hanya digunakan oleh driver printer. Driver menyediakan ukuran, dalam byte, dari area privat ini di anggota dmDriverExtra . Anggota privat yang ditentukan driver untuk penggunaan eksklusif oleh driver.
Untuk pengandar printer, struktur DEVMODEW digunakan untuk menentukan pilihan pengguna untuk dokumen cetak. Ini juga digunakan untuk menentukan nilai default pilihan ini untuk printer, seperti jumlah salinan untuk dicetak, ukuran kertas, dan atribut lainnya. Untuk perangkat tampilan, struktur DEVMODEW menentukan atribut tampilan seperti jumlah bit per piksel, dimensi piksel, dan frekuensi tampilan.
Menginisialisasi Struktur DEVMODEW
Tergantung pada apakah itu akan digunakan oleh driver tampilan atau oleh driver printer, struktur DEVMODEW diinisialisasi dengan dua cara yang berbeda.
Inisialisasi DRIVER tampilan DEVMODEW
Titik masuk DrvGetModes driver tampilan menginisialisasi semua anggota struktur DEVMODEW ke nol. DrvGetModes kemudian menyalin nama DLL driver tampilan ke anggota dmDeviceName , mengisi anggota dmSpecVersion dan dmDriverVersion dengan versi struktur DEVMODEW, dan menyalin informasi atribut tampilan ke anggota yang sesuai.
Inisialisasi driver printer DEVMODEW
Ketika aplikasi melakukan panggilan ke DocumentProperties (fungsi DLL antarmuka printer yang dijelaskan dalam dokumentasi Microsoft Windows SDK) atau DrvDocumentPropertySheets (DDI grafis sistem operasi berbasis NT), struktur DEVMODEW dibuat dengan nilai default. Aplikasi kemudian gratis untuk memodifikasi salah satu anggota DEVMODEW publik. Setelah perubahan apa pun, aplikasi kemudian harus melakukan panggilan kedua ke fungsi yang sama dengan yang disebut sebelumnya, untuk menggabungkan anggota yang diubah dengan anggota struktur DEVMODEW internal driver. Panggilan kedua diperlukan karena beberapa perubahan mungkin tidak berfungsi dengan benar; pengandar pencetak harus dipanggil untuk memperbaiki struktur DEVMODEW. Ketika dokumen akan dicetak, aplikasi meneruskan struktur DEVMODEW gabungan ke CreateDC (dijelaskan dalam dokumentasi Microsoft Windows SDK), yang meneruskannya ke DDI DrvEnablePDEV . Pada saat itu, DLL penyajian driver memvalidasi struktur DEVMODEW dan melakukan perbaikan, jika perlu, sebelum melakukan pekerjaan cetak.
Menggunakan Struktur DEVMODEW
Beberapa API dan DDI grafis menggunakan informasi dalam struktur DEVMODEW untuk tujuan seperti mencetak, mengkueri kemampuan perangkat, memperlihatkan antarmuka pengguna, dan lainnya. Misalnya, DrvConvertDevMode adalah DDI grafik penampung cetak yang menerjemahkan struktur DEVMODEW dari satu versi sistem operasi ke versi sistem operasi lainnya. Ini mungkin diperlukan jika driver printer mendapatkan struktur DEVMODEW dari komputer lain yang berjalan pada versi sistem operasi yang berbeda.
Memodifikasi Struktur DEVMODEW
Aplikasi dan driver gratis untuk meminta struktur DEVMODEW dan memodifikasi bagian publiknya secara langsung. Namun, hanya driver yang diizinkan untuk memodifikasi anggota struktur DEVMODEW privat.
Untuk memodifikasi anggota struktur DEVMODEW privat, driver harus terlebih dahulu menentukan offset awal data privat. Mengingat penunjuk ke awal struktur ini, dan anggota dmSize , yang memegang ukuran bagian publik dari struktur, awal bagian privat dapat ditemukan. Contoh berikut menunjukkan cara menginisialisasi penunjuk ke awal bagian privat. Dalam contoh ini, pdm menunjuk ke awal struktur DEVMODEW.
PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm -> dmSize));
Perbedaan DRIVER Printer/Driver Tampilan DEVMODEW
Anggota struktur DEVMODEW termasuk dalam tiga kategori:
Anggota yang hanya digunakan oleh driver printer
Anggota yang hanya digunakan oleh driver tampilan
Anggota yang digunakan oleh printer dan driver tampilan
Tabel berikut ini mencantumkan beberapa anggota DEVMODEW publik yang hanya digunakan oleh driver printer:
Hanya Digunakan oleh Pengandar Pencetak | Tujuan |
---|---|
dmScale | Menentukan persentase di mana gambar akan diskalakan untuk pencetakan. |
dmCopies | Menentukan jumlah salinan yang akan dicetak. |
dmColor | Menentukan apakah pencetak warna harus mencetak warna atau monokrom. |
dmOrientation | Menentukan orientasi kertas, baik potret atau lanskap. |
Tabel berikutnya mencantumkan beberapa anggota DEVMODEW publik yang hanya digunakan oleh driver tampilan:
Hanya Digunakan oleh Driver Tampilan | Tujuan |
---|---|
dmBitsPerPel | Menentukan resolusi warna, dalam bit per piksel, dari perangkat tampilan. |
dmPelsWidth | Menentukan lebar, dalam piksel, dari permukaan perangkat yang terlihat. |
dmPelsHeight | Menentukan tinggi, dalam piksel, dari permukaan perangkat yang terlihat. |
dmDisplayFlags | Menentukan mode tampilan - warna versus monokrom, terjalin versus noninterlaced. |
dmDisplayFrequency | Menentukan, dalam hertz, laju refresh layar. |
Tabel ketiga mencantumkan beberapa anggota DEVMODEW publik yang digunakan oleh printer dan driver tampilan:
Digunakan oleh Pencetak dan Pengandar Tampilan | Tujuan |
---|---|
dmDeviceName | Untuk tampilan, menentukan DLL pengandar tampilan. Untuk pencetak, tentukan "nama yang mudah diingat" dari pencetak. |
dmFields | Menentukan bendera bit yang mengidentifikasi anggota DEVMODEW mana yang mengikutinya yang sedang digunakan. Misalnya, bendera DM_BITSPERPEL diatur saat anggota dmBitsPerPel berisi data yang valid. |
dmSize | Menentukan ukuran, dalam byte, dari bagian publik struktur DEVMODEW. |
dmDriverExtra | Menentukan jumlah byte data driver privat setelah anggota struktur publik. Untuk driver tampilan, ini biasanya nol. |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk