PSCRIPT5_PRIVATE_DEVMODE 結構可讓 Pscript5 外掛程式判斷 Pscript5 的 DEVMODEW 結構私人部分大小。
語法
typedef struct _PSCRIPT5_PRIVATE_DEVMODE {
WORD wReserved[57];
WORD wSize;
} PSCRIPT5_PRIVATE_DEVMODE, *PPSCRIPT5_PRIVATE_DEVMODE;
Members
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 結構的私人部分位址,請執行下列動作:
呼叫 GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE 巨集,並在呼叫中傳遞 DEVMODEW 結構的位址。
確認 (pdm)->dmDriverExtra 大於巨集傳回的值。 (巨集會傳回 PSCRIPT5_PRIVATE_DEVMODE 結構的 wSize 成員值。
判斷外掛程式 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 資料大小。
確認外掛程式 DEVMODEW 結構的專用部分以有效的 OEM_DMEXTRAHEADER 結構開頭。
需求
| Requirement | 價值觀 |
|---|---|
| Header | printoem.h(包括 Printoem.h) |