struttura UNIDRV_PRIVATE_DEVMODE (printoem.h)

La struttura UNIDRV_PRIVATE_DEVMODE consente ai plug-in Unidrv di determinare le dimensioni della parte privata della struttura DEVMODEW di Unidrv.

Sintassi

typedef struct _UNIDRV_PRIVATE_DEVMODE {
  WORD wReserved[4];
  WORD wSize;
} UNIDRV_PRIVATE_DEVMODE, *PUNIDRV_PRIVATE_DEVMODE;

Members

wReserved[4]

Riservato per l'utilizzo nel sistema.

wSize

Dimensioni, in byte, della parte privata della struttura DEVMODEW di Unidrv .

Commenti

Per informazioni sulle sezioni pubbliche e private della struttura DEVMODEW, vedere DEVMODEW.

Printoem.h definisce una macro per determinare le dimensioni della parte privata della struttura DEVMODEW di 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 )

L'argomento pdm nella macro GET_UNIDRV_PRIVATE_DEVMODE_SIZE è un puntatore a una struttura DEVMODEW . La macro determina se il valore del membro dmDriverExtra della struttura DEVMODEW è maggiore dell'offset di byte del membro wSize della struttura UNIDRV_PRIVATE_DEVMODE. In tal caso, la macro restituisce il valore del membro wSize nella struttura UNIDRV_PRIVATE_DEVMODE. In caso contrario, la macro restituisce zero.

Per determinare in modo sicuro l'indirizzo della parte privata della struttura DEVMODEW del plug-in, eseguire le operazioni seguenti:

  1. Chiamare la macro GET_UNIDRV_PRIVATE_DEVMODE_SIZE , passando l'indirizzo della struttura DEVMODEW nella chiamata.

  2. Verificare che (pdm)->dmDriverExtra sia maggiore del valore restituito dalla macro. La macro restituisce il valore del membro wSize della struttura UNIDRV_PRIVATE_DEVMODE .

  3. Determinare l'indirizzo della parte privata della struttura DEVMODEW del plug-in come indicato di seguito.

    pdmPlugin = (PBYTE)(pdm) + (pdm)->dmSize + wSize;
    

    L'esempio precedente inizia con l'indirizzo della struttura DEVMODEW pubblica (pdm), aggiunge il numero di byte di questa struttura (pdm-dmSize>), quindi aggiunge le dimensioni in byte della struttura DEVMODEW privata Unidrv (wSize). I dati DI DEVMODEW privati di un plug-in iniziano a questo indirizzo di memoria. Se sono presenti più plug-in concatenati, l'indirizzo restituito da questo esempio è quello dei primi dati DEVMODEW privati del plug-in. I dati DI DEVMODEW privati del secondo plug-in seguono i primi dati DEVMODEW privati del plug-in, i dati DEVMODEW privati del terzo plug-in seguono quello dei dati DEVMODEW privati del secondo plug-in e così via. Uno sviluppatore di plug-in che deve determinare l'indirizzo dei dati DEVMODEW privati del plug-in n-1 deve conoscere le dimensioni dei dati DEVMODEW privati per i primi plug-in n - 1.

  4. Verificare che la parte privata della struttura DEVMODEW del plug-in inizi con una struttura di OEM_DMEXTRAHEADER valida.

Requisiti

Requisito Valore
Intestazione printoem.h (include Printoem.h)

Vedi anche

PSCRIPT5_PRIVATE_DEVMODE