struktur PSCRIPT5_PRIVATE_DEVMODE (printoem.h)

Struktur PSCRIPT5_PRIVATE_DEVMODE memungkinkan plug-in Pscript5 untuk menentukan ukuran bagian privat struktur DEVMODEW Pscript5.

Sintaks

typedef struct _PSCRIPT5_PRIVATE_DEVMODE {
  WORD wReserved[57];
  WORD wSize;
} PSCRIPT5_PRIVATE_DEVMODE, *PPSCRIPT5_PRIVATE_DEVMODE;

Anggota

wReserved[57]

Dicadangkan untuk penggunaan sistem.

wSize

Ukuran, dalam byte, dari bagian privat dari struktur DEVMODEW Pscript5.

Keterangan

Untuk informasi tentang bagian publik dan privat dari struktur DEVMODEW , lihat DEVMODEW.

Printoem.h mendefinisikan makro yang dapat Anda gunakan untuk menentukan ukuran bagian privat struktur DEVMODEW Pscript5.

#define GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE(pdm)\
    ( ( (pdm)->dmDriverExtra > (FIELD_OFFSET(PSCRIPT5_PRIVATE_DEVMODE, wSize) + sizeof(WORD)) ) ? \
    ((PPSCRIPT5_PRIVATE_DEVMODE)((PBYTE)(pdm) + (pdm)-> dmSize)) -> wSize : 0 )

Argumen pdm dalam makro GET_PSCRIPT5_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 PSCRIPT5_PRIVATE_DEVMODE . Jika demikian, makro mengembalikan nilai anggota wSize dalam struktur PSCRIPT5_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_PSCRIPT5_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 PSCRIPT5_PR****IVATE_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 Pscript5 (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

UNIDRV_PRIVATE_DEVMODE