estructura PSCRIPT5_PRIVATE_DEVMODE (printoem.h)

La estructura de PSCRIPT5_PRIVATE_DEVMODE permite que los complementos Pscript5 determinen el tamaño de la parte privada de la estructura DEVMODEW de Pscript5.

Sintaxis

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

Miembros

wReserved[57]

Reservado para uso del sistema.

wSize

Tamaño, en bytes, de la parte privada de la estructura DEVMODEW de Pscript5.

Comentarios

Para obtener información sobre las secciones públicas y privadas de la estructura DEVMODEW , vea DEVMODEW.

Printoem.h define una macro que puede usar para determinar el tamaño de la parte privada de la estructura DEVMODEW de 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 )

El argumento pdm de la macro GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE es un puntero a una estructura DEVMODEW . La macro determina si el valor del miembro dmDriverExtra de la estructura DEVMODEW es mayor que el desplazamiento de bytes del miembro wSize de la estructura PSCRIPT5_PRIVATE_DEVMODE . Si es así, la macro devuelve el valor del miembro wSize en la estructura PSCRIPT5_PRIVATE_DEVMODE . Si no es así, la macro devuelve cero.

Para determinar de forma segura la dirección de la parte privada de la estructura DEVMODEW del complemento, haga lo siguiente:

  1. Llame a la macro GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE y pase la dirección de la estructura DEVMODEW en la llamada.

  2. Compruebe que (pdm)->dmDriverExtra es mayor que el valor devuelto por la macro. (La macro devuelve el valor del miembro wSize del PSCRIPT5_PR IVATE_DEVMODE estructura).

  3. Determine la dirección de la parte privada de la estructura DEVMODEW del complemento como se indica a continuación.

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

    El ejemplo anterior comienza con la dirección de la estructura PÚBLICA DEVMODEW (pdm), agrega el número de bytes de esta estructura (pdm-dmSize>) y, a continuación, agrega el tamaño en bytes de la estructura DEVMODEW privada de Pscript5 (wSize). Los datos DEVMODEW privados de un complemento comienzan en esta dirección de memoria. Si hay varios complementos encadenados juntos, la dirección devuelta por este ejemplo es la de los primeros datos DEVMODEW privados del complemento.

    Los datos privados de DEVMODEW del segundo complemento siguen los datos privados de DEVMODEW del primer complemento, los datos privados de DEVMODEW del tercer complemento siguen el de los datos privados de DEVMODEW del segundo complemento, etc. Un desarrollador de complementos que necesite determinar la dirección de los datos privados de DEVMODEW del complemento n-º debe conocer los tamaños de los datos privados de DEVMODEW para los primeros complementos n - 1.

  4. Compruebe que la parte privada de la estructura DEVMODEW del complemento comienza con una estructura de OEM_DMEXTRAHEADER válida.

Requisitos

Requisito Valor
Header printoem.h (include Printoem.h)

Consulte también

UNIDRV_PRIVATE_DEVMODE