Partager via


structure PSCRIPT5_PRIVATE_DEVMODE (printoem.h)

La structure PSCRIPT5_PRIVATE_DEVMODE permet aux plug-ins Pscript5 de déterminer la taille de la partie privée de la structure DEVMODEW de Pscript5.

Syntaxe

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

Membres

wReserved[57]

Réservé pour le système.

wSize

Taille, en octets, de la partie privée de la structure DEVMODEW de Pscript5.

Remarques

Pour plus d’informations sur les sections publiques et privées de la structure DEVMODEW , consultez DEVMODEW.

Printoem.h définit une macro que vous pouvez utiliser pour déterminer la taille de la partie privée de la structure 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 )

L’argument pdm dans la macro GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE est un pointeur vers une structure DEVMODEW. La macro détermine si la valeur du membre dmDriverExtra de la structure DEVMODEW est supérieure au décalage d’octet du membre wSize de la structure PSCRIPT5_PRIVATE_DEVMODE . Si c’est le cas, la macro retourne la valeur du membre wSize dans la structure PSCRIPT5_PRIVATE_DEVMODE . Si ce n’est pas le cas, la macro retourne zéro.

Pour déterminer en toute sécurité l’adresse de la partie privée de la structure DEVMODEW de votre plug-in, procédez comme suit :

  1. Appelez la macro GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE , en passant l’adresse de la structure DEVMODEW dans l’appel.

  2. Vérifiez que (pdm)->dmDriverExtra est supérieur à la valeur retournée par la macro. (La macro retourne la valeur du membre wSize de la structure PSCRIPT5_PR****IVATE_DEVMODE.)

  3. Déterminez l’adresse de la partie privée de la structure DEVMODEW de votre plug-in comme suit.

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

    L’exemple précédent commence par l’adresse de la structure DEVMODEW publique (pdm), ajoute le nombre d’octets de cette structure (pdm-dmSize>), puis ajoute la taille en octets de la structure DEVMODEW privée Pscript5 (wSize). Les données DEVMODEW privées d’un plug-in commencent à cette adresse mémoire. Si plusieurs plug-ins sont chaînés, l’adresse retournée par cet exemple est celle des données DEVMODEW privées du premier plug-in.

    Les données DEVMODEW privées du deuxième plug-in suivent les données DEVMODEW privées du premier plug-in, les données DEVMODEW privées du troisième plug-in suivent celles des données DEVMODEW privées du deuxième plug-in, et ainsi de suite. Un développeur de plug-ins qui doit déterminer l’adresse des données DEVMODEW privées du n-ième plug-in doit connaître la taille des données DEVMODEW privées pour les n- 1 premiers plug-ins.

  4. Vérifiez que la partie privée de la structure DEVMODEW de votre plug-in commence par une structure OEM_DMEXTRAHEADER valide.

Configuration requise

Condition requise Valeur
En-tête printoem.h (inclure Printoem.h)

Voir aussi

UNIDRV_PRIVATE_DEVMODE