PSCRIPT5_PRIVATE_DEVMODE 结构 (printoem.h)

PSCRIPT5_PRIVATE_DEVMODE结构使 Pscript5 插件能够确定 Pscript5 的 DEVMODEW 结构的专用部分的大小。

语法

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

成员

wReserved[57]

预留给系统使用。

wSize

Pscript5 的 DEVMODEW 结构的专用部分的大小(以字节为单位)。

注解

有关 DEVMODEW 结构的公共和私有部分的信息,请参阅 DEVMODEW

Printoem.h 定义可用于确定 Pscript5 DEVMODEW 结构的专用部分的大小的宏。

#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 )

GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE 宏中的 pdm 参数是指向 DEVMODEW 结构的指针。 宏确定 DEVMODEW 结构的 dmDriverExtra 成员的值是否大于 PSCRIPT5_PRIVATE_DEVMODE 结构的 wSize 成员的字节偏移量。 如果是这样,宏将返回 PSCRIPT5_PRIVATE_DEVMODE 结构中 wSize 成员的值。 否则,宏返回零。

若要安全地确定插件 DEVMODEW 结构的专用部分的地址,请执行以下操作:

  1. 调用 GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE 宏,在调用中传递 DEVMODEW 结构的地址。

  2. 验证 (pdm) -dmDriverExtra> 是否大于宏返回的值。 (宏返回 PSCRIPT5_PR****IVATE_DEVMODE structure.)

  3. 确定插件 DEVMODEW 结构的专用部分的地址,如下所示。

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

    前面的示例从公共 DEVMODEW 结构的地址开始, (pdm) , (pdm-dmSize>) 添加此结构的字节数,然后将 Pscript5 专用 DEVMODEW 结构的大小 (wSize) 相加。 插件的专用 DEVMODEW 数据从此内存地址开始。 如果有多个插件链接在一起,则此示例返回的地址是第一个插件的专用 DEVMODEW 数据的地址。

    第二个插件的专用 DEVMODEW 数据遵循第一个插件的专用 DEVMODEW 数据,第三个插件的专用 DEVMODEW 数据遵循第二个插件的专用 DEVMODEW 数据,等等。 需要确定第 n 个插件的专用 DEVMODEW 数据的地址的插件开发人员必须知道前 n - 1 个插件的专用 DEVMODEW 数据的大小。

  4. 验证插件的 DEVMODEW 结构的专用部分是否以有效的 OEM_DMEXTRAHEADER 结构开头。

要求

要求
Header printoem.h (包括 Printoem.h)

另请参阅

UNIDRV_PRIVATE_DEVMODE