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:

  1. Panggil makro GET_UNIDRV_PRIVATE_DEVMODE_SIZE , lewati alamat struktur DEVMODEW dalam panggilan.

  2. Verifikasi bahwa (pdm)->dmDriverExtra lebih besar dari nilai yang dikembalikan oleh makro. (Makro mengembalikan nilai anggota wSize dari struktur UNIDRV_PRIVATE_DEVMODE .)

  3. 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.

  4. 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

PSCRIPT5_PRIVATE_DEVMODE