GetOptionAttribute の使用
重要
Windows でプリンターとの通信手段として推奨されるのは、最新の印刷プラットフォームです。 プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。
詳細については、最新の印刷プラットフォームに関する記事および「印刷サポート アプリの設計ガイド」を参照してください。
この機能は、PostScript Printer Driver(PPD)機能でのみサポートされています。 ある属性が利用できない場合、 GetOptionAttribute E_INVALIDARG を返します。
一般オプション属性の出力パラメータ
以下の表で、 pdwDataTypeパラメータはEATTRIBUTE_DATATYPE 列挙型の値を取ります。
一般オプション属性 | 出力パラメーター |
---|---|
表示名 | pdwDataType: kADT_UNICODE pbData: オプシ ョ ンキーワー ド 名の翻訳文字列のヌ ル終端 Unicode 文字列 pcbNeeded: pbData が指 し 示す Unicode 文字列のバ イ ト 数 (ヌ ル終端を含む) このオプション属性はEnumOptions PPD機能で復帰できる。 |
[呼び出し] | pdwDataType: kADT_BINARY pbData: byte array for the option's InvocationValue pcbNeeded: pbDataが指すバイナリデータのバイト数 このオプション属性はEnumOptions PPD機能で復帰できる。 オプションのInvocationValueが空の場合、この関数はpdwDataType as above, set pcbNeeded = 0とし、S_OKを返す。 |
OrderDependencyValue | pdwDataType: kADT_LONG pbData: このオプションの PPD の OrderDependency または NonUIOrderDependency キーワードで指定された相対順序。 これらのキーワードの最初のパラメータは、LONGに変換されて返される実数であることに注意。 pcbNeeded: sizeof(LONG) このオプション属性は、PPDにOrderDependencyまたは*NonUIOrderDependencyエントリがあり、そのエントリがoptionKeywordを省略しないオプションに対してのみ利用可能である。 |
OrderDependencySection | pdwDataType: kADT_ASCII pbData: 以下のセクション名のいずれかを含むヌル終端の ASCII 文字列: "ExitServer"、"Prolog"、"DocumentSetup"、"PageSetup"、"JCLSetup"、"AnySetup" pcbNeeded: pbDataが指すASCII文字列のバイト数(ヌルターミネータを含む) このオプション属性は、PPDにOrderDependencyまたはNonUIOrderDependencyエントリがあり、そのエントリがoptionKeywordを省略しないオプションに対してのみ利用できる。 |
特定のオプション属性の出力パラメータ
先に説明した一般的なオプション属性に加えて、以下の表に列挙したオプション属性は、利用可能な時期に制限がある場合があります。 いくつかの属性は、特定のPPD機能のすべてのオプションで利用可能であり、他の属性は、そのPPD機能の特定のオプションでのみ利用可能である。 そのような制限がある場合は、各オプション属性に記載されている。
Keyword | オプション属性 | 出力パラメーター |
---|---|---|
InputSlot | ||
RequiresPageRegion | pdwDataType: kADT_BOOL pbData: TRUE PageRegionの呼び出しコードをInputSlotの呼び出しコードと一緒に送らなければならない場合。FALSE その他. これはPPDのRequiresPageRegionキーワードに基づいている。 この入力スロット・オプションでキーワードが省略された場合、TRUE が返されます。 pcbNeeded: sizeof(BOOL) このオプション属性は、ドライバが生成するオプション "*UseFormTrayTable "を除いて、"InputSlot "PPD機能のどのオプションでも利用可能である。 |
|
OutputBin | ||
OutputOrderReversed | pdwDataType: kADT_BOOL pbData: TRUE binOptionの出力順が "Reverse "の場合はFALSE 出力順が "Normal "の場合。 これはPPDのDefaultOutputOrderとageStackOrderキーワードに基づいている。 pcbNeeded: sizeof(BOOL) このオプション属性は、"OutputBin "PPD機能のどのオプションでも利用できる。 |
|
PageSize | ||
ImageableArea | pdwDataType: kADT_RECT pbData: PPDのImageableAreaキーワードで指定されたPageSizeオプシ ョ ンの画像化可能領域の外接枠が、RECT構造体で返される。left and bottom メンバはllxとllyの値を持ち right and top メンバーにはurxとuryの値が含まれる。 数値はすべてミクロン単位。 PPDのllxとlyの値は、ミクロン単位に変換される前に、最も近い整数に切り上げられる。 PPDのurxとuryの値は、ミクロン単位に変換される前に最も近い整数に切り捨てられる。 pcbNeeded: sizeof(RECT) このオプション属性は、"CustomPageSize "オプションを除く、"PageSize "PPD機能のどのオプションでも利用可能です。 |
|
PaperDimension | pdwDataType: kADT_SIZE pbData:PPDのPaperDimensionキーワードで指定されたPageSizeオプションの物理的な寸法は、SIZE構造体で返され、そのcxメンバは幅値を含み、cyメンバは高さ値を含む。 数値はすべてミクロン単位。 pcbNeeded: sizeof(SIZE) PPDのPaperDimensionキーワードで指定されたPageSizeオプションの物理的な寸法は、SIZE構造体で返され、そのcxメンバは幅値を含み、cyメンバは高さ値を含む。 |
|
PageSize: CustomPageSize | ||
HWMargins | pdwDataType: kADT_RECT pbData: PPDのHWMarginsキーワードで指定された4つの値がRECT構造体で返される。 数値はすべてミクロン単位。 pcbNeeded: sizeof(RECT) このオプション属性は、"PageSize "PPD機能の "CustomPageSize "オプションでのみ利用可能です。 |
|
MaxMediaHeight | pdwDataType: kADT_DWORD pbData: PPD の *MaxMediaHeight キーワードで指定された値 (単位はミクロン)。 pcbNeeded: sizeof(DWORD) このオプション属性は、"PageSize "PPD機能の "CustomPageSize "オプションでのみ利用可能です。 |
|
MaxMediaWidth | pdwDataType: kADT_DWORD pbData:PPD の MaxMediaWidth キーワードで指定された値をミクロン単位で指定する。 pcbNeeded: sizeof(DWORD) このオプション属性は、"PageSize "PPD機能の "CustomPageSize "オプションでのみ利用可能です。 |
|
ParamCustomPageSize | pdwDataType: kADT_CUSTOMSIZEPARAMS pbData:それぞれの要素は、CUSTOMPARAM_MAX要素の配列であるCUSTOMSIZEPARAM 構造. この配列の各要素には、PPD の ParamCustomPageSize キーワードの paramOption 項目で指定された値が格納されます。 この配列の各要素には、PPD の ParamCustomPageSize キーワードの paramOption 項目で指定された値が格納されます。 Orientation "の場合、lMinValとlMaxValの値は[0, 3]の範囲である。 pcbNeeded: sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX このオプション属性は、"PageSize "PPD機能の "CustomPageSize "オプションでのみ利用可能です。 詳細については、ParamCustomPageSize に関する以下のノートを参照してください。 |
|
InstalledMemory | ||
VMOption | pdwDataType: kADT_DWORD pbData: PPD の VMOption キーワードで指定された値、または PPD がこのオプションに VMOption キーワードを指定していない場合は 0。 pcbNeeded: sizeof(DWORD) このオプション属性は、"InstalledMemory "PPD機能のどのオプションでも利用できる。 |
|
FCacheSize | pdwDataType: kADT_DWORD pbData: PPD の FCacheSize キーワードで指定された値、または PPD がこのオプションに FCacheSize キーワードを指定していない場合は 0。 pcbNeeded: sizeof(DWORD) このオプション属性は、"InstalledMemory "PPD機能のどのオプションでも利用できる。 |
ParamCustomPageSizeに関する注意事項
以下は、PPDファイルの「ParamCustomPageSize Width」項目の元の順序、最小値、最大値を取得する方法を示すサンプルコードです。 printoem.hで定義されているCUSTOMPARAM_WIDTH定数は、printoem.hで定義されている。 CUSTOMSIZEPARAM Widthエントリーに関連する情報を含む構造体。 この構造体は、そのような構造体の配列を形成する CUSTOMPARAM_MAX CUSTOMSIZEPARAM 構造体の1つである。 printoem.hヘッダーは、この配列の構造体のオフセット(Width、Height、WidthOffset、HeightOffset、Orientation)を列挙したCUSTOMPARAM_XXXという定数セットを定義している。
PCUSTOMSIZEPARAM pCSParam;
pCSParam = (PCUSTOMSIZEPARAM)pbData + CUSTOMPARAM_WIDTH;
order = pCSParam->dwOrder;
// Convert lMinVal and lMaxVal from microns to points.
// To convert microns to inches, divide by 25400.
// To convert inches to points, multiply by 72.
min = pCSParam->lMinVal / 25400.0 * 72.0;
max = pCSParam->lMaxVal / 25400.0 * 72.0;