struktur UNIDRV_PRIVATE_DEVMODE (printoem.h)
Struktur UNIDRV_PRIVATE_DEVMODE memungkinkan plug-in Unidrv untuk menentukan ukuran bagian privat struktur DEVMODEW Unidrv.
Sintaks
typedef struct _UNIDRV_PRIVATE_DEVMODE {
WORD wReserved[4];
WORD wSize;
} UNIDRV_PRIVATE_DEVMODE, *PUNIDRV_PRIVATE_DEVMODE;
Anggota
wReserved[4]
Dicadangkan untuk penggunaan sistem.
wSize
Ukuran, dalam byte, dari bagian privat dari struktur DEVMODEW Unidrv.
Keterangan
Untuk informasi tentang bagian publik dan privat dari struktur DEVMODEW , lihat DEVMODEW.
Printoem.h mendefinisikan makro untuk menentukan ukuran bagian privat dari struktur DEVMODEW Unidrv.
#define GET_UNIDRV_PRIVATE_DEVMODE_SIZE(pdm)\
( ( (pdm)->dmDriverExtra > (FIELD_OFFSET(UNIDRV_PRIVATE_DEVMODE, wSize) + sizeof(WORD)) ) ? \
((PUNIDRV_PRIVATE_DEVMODE)((PBYTE)(pdm) + (pdm)-> dmSize)) -> wSize : 0 )
Argumen pdm dalam makro GET_UNIDRV_PRIVATE_DEVMODE_SIZE adalah penunjuk ke struktur DEVMODEW . Makro menentukan apakah nilai anggota dmDriverExtra dari struktur DEVMODEW lebih besar dari offset byte anggota wSize dari struktur UNIDRV_PRIVATE_DEVMODE. Jika demikian, makro mengembalikan nilai anggota wSize dalam struktur UNIDRV_PRIVATE_DEVMODE. Jika tidak, makro mengembalikan nol.
Untuk menentukan alamat bagian privat struktur DEVMODEW plug-in Anda dengan aman, lakukan hal berikut:
Panggil makro GET_UNIDRV_PRIVATE_DEVMODE_SIZE , lewati alamat struktur DEVMODEW dalam panggilan.
Verifikasi bahwa (pdm)->dmDriverExtra lebih besar dari nilai yang dikembalikan oleh makro. (Makro mengembalikan nilai anggota wSize dari struktur UNIDRV_PRIVATE_DEVMODE .)
Tentukan alamat bagian privat dari struktur DEVMODEW plug-in Anda sebagai berikut.
pdmPlugin = (PBYTE)(pdm) + (pdm)->dmSize + wSize;
Contoh sebelumnya dimulai dengan alamat struktur DEVMODEW publik (pdm), menambahkan jumlah byte struktur ini (pdm-dmSize>), lalu menambahkan ukuran dalam byte struktur DEVMODEW privat Unidrv (wSize). Data DEVMODEW privat plug-in dimulai pada alamat memori ini. Jika ada beberapa plug-in yang dirantai bersama-sama, alamat yang dikembalikan oleh contoh ini adalah dari data DEVMODEW privat plug-in pertama. Data DEVMODEW privat plug-in kedua mengikuti data DEVMODEW privat plug-in pertama, data DEVMODEW privat plug-in ketiga mengikuti data DEVMODEW privat plug-in kedua, dan sebagainya. Pengembang plug-in yang perlu menentukan alamat data DEVMODEW privat plug-in ke-n harus mengetahui ukuran data DEVMODEW privat untuk plug-in n - 1 pertama.
Verifikasi bahwa bagian privat dari struktur DEVMODEW plug-in Anda dimulai dengan struktur OEM_DMEXTRAHEADER yang valid.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | printoem.h (termasuk Printoem.h) |
Lihat juga
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