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 メンバーの値を返します。 そうでない場合、マクロは 0 を返します。
プラグインの DEVMODEW 構造体のプライベート部分のアドレスを安全に特定するには、次の操作を行います。
GET_PSCRIPT5_PRIVATE_DEVMODE_SIZE マクロを呼び出し、呼び出しで DEVMODEW 構造体のアドレスを渡します。
(pdm)->dmDriverExtra がマクロによって返される値よりも大きいことを確認します。 (このマクロは、PSCRIPT5_PR****IVATE_DEVMODE 構造体の wSize メンバーの値を返します。
プラグインの DEVMODEW 構造体のプライベート部分のアドレスを次のように決定します。
pdmPlugin = (PBYTE)(pdm) + (pdm)->dmSize + wSize;
前の例では、パブリック DEVMODEW 構造体 (pdm) のアドレスから始まり、この構造体のバイト数 (pdm->dmSize) を追加し、Pscript5 プライベート DEVMODEW 構造体 (wSize) のバイト単位のサイズを追加します。 プラグインのプライベート DEVMODEW データは、このメモリ アドレスから始まります。 複数のプラグインが連結されている場合、この例で返されるアドレスは、最初のプラグインのプライベート DEVMODEW データのアドレスです。
2 つ目のプラグインのプライベート DEVMODEW データは、最初のプラグインのプライベート DEVMODEW データに従います。3 番目のプラグインのプライベート DEVMODEW データは、2 番目のプラグインのプライベート DEVMODEW データのデータに従います。 n-th プラグインのプライベート DEVMODEW データのアドレスを特定する必要があるプラグイン開発者は、最初の n - 1 プラグインのプライベート DEVMODEW データのサイズを把握している必要があります。
プラグインの DEVMODEW 構造体のプライベート部分が有効な OEM_DMEXTRAHEADER 構造体で始まっていることを確認します。
必要条件
要件 | 価値 |
---|---|
ヘッダー | printoem.h (Printoem.h を含む) |