Compartilhar via


estrutura UNIDRV_PRIVATE_DEVMODE (printoem.h)

A estrutura UNIDRV_PRIVATE_DEVMODE permite que plug-ins Unidrv determinem o tamanho da parte privada da estrutura DEVMODEW da Unidrv.

Sintaxe

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

Membros

wReserved[4]

Reservado para uso do sistema.

wSize

O tamanho, em bytes, da parte privada da estrutura DEVMODEW do Unidrv.

Comentários

Para obter informações sobre as seções públicas e privadas da estrutura DEVMODEW , consulte DEVMODEW.

Printoem.h define uma macro para determinar o tamanho da parte privada da estrutura DEVMODEW da 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 )

O argumento pdm na macro GET_UNIDRV_PRIVATE_DEVMODE_SIZE é um ponteiro para uma estrutura DEVMODEW . A macro determina se o valor do membro dmDriverExtra da estrutura DEVMODEW é maior que o deslocamento de bytes do membro wSize da estrutura UNIDRV_PRIVATE_DEVMODE. Nesse caso, a macro retornará o valor do membro wSize na estrutura UNIDRV_PRIVATE_DEVMODE. Caso contrário, a macro retornará zero.

Para determinar com segurança o endereço da parte privada da estrutura DEVMODEW do plug-in, faça o seguinte:

  1. Chame a macro GET_UNIDRV_PRIVATE_DEVMODE_SIZE , passando o endereço da estrutura DEVMODEW na chamada.

  2. Verifique se (pdm)->dmDriverExtra é maior que o valor retornado pela macro. (A macro retorna o valor do membro wSize da estrutura UNIDRV_PRIVATE_DEVMODE .)

  3. Determine o endereço da parte privada da estrutura DEVMODEW do plug-in da seguinte maneira.

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

    O exemplo anterior começa com o endereço da estrutura pública DEVMODEW (pdm), adiciona o número de bytes dessa estrutura (pdm-dmSize>) e adiciona o tamanho em bytes da estrutura de DEVMODEW privada Unidrv (wSize). Os dados DEVMODEW privados de um plug-in começam nesse endereço de memória. Se houver vários plug-ins encadeados, o endereço retornado por este exemplo será o dos dados privados de DEVMODEW do primeiro plug-in. Os dados de DEVMODEW privados do segundo plug-in seguem os dados privados de DEVMODEW do primeiro plug-in, os dados privados de DEVMODEW do terceiro plug-in seguem os dos dados privados de DEVMODEW do segundo plug-in e assim por diante. Um desenvolvedor de plug-ins que precisa determinar o endereço dos dados DEVMODEW privados do plug-in n-th deve saber os tamanhos dos dados privados de DEVMODEW para os primeiros plug-ins n - 1.

  4. Verifique se a parte privada da estrutura DEVMODEW do plug-in começa com uma estrutura de OEM_DMEXTRAHEADER válida.

Requisitos

Requisito Valor
Cabeçalho printoem.h (inclua Printoem.h)

Confira também

PSCRIPT5_PRIVATE_DEVMODE