Compartir a través de


estructura UNIDRV_PRIVATE_DEVMODE (printoem.h)

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

Sintaxis

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

Miembros

wReserved[4]

Reservado para uso del sistema.

wSize

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

Comentarios

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

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

El argumento pdm de la macro GET_UNIDRV_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 UNIDRV_PRIVATE_DEVMODE. Si es así, la macro devuelve el valor del miembro wSize en la estructura UNIDRV_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_UNIDRV_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 de la estructura UNIDRV_PRIVATE_DEVMODE ).

  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 Unidrv (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

PSCRIPT5_PRIVATE_DEVMODE