共用方式為


使用 GetOptionAttribute

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

此功能僅支援 PostScript 印表機驅動程式 (PPD) 功能。 如果特定屬性無法使用, GetOptionAttribute 會傳回E_INVALIDARG。

一般選項屬性的輸出參數

在下表中,pdwDataType 參數接受EATTRIBUTE_DATATYPE列舉型別的值

一般選項屬性 輸出參數
DisplayName pdwDataType:kADT_UNICODE

pbData:選項關鍵詞名稱翻譯字串的 Null 終止 Unicode 字串

pbData 所指向之 Unicode 字串的位元組計數(包括 Null 終止符)

此選項屬性可供 EnumOptions 在 PPD 功能上傳回的任何選項使用。
調用 pdwDataType:kADT_BINARY

pbData:選項 InvocationValue 的位元組陣列

pbNeeded:p bData 所指向之二進位數據的位元元組計數

此選項屬性可供 EnumOptions 在 PPD 功能上傳回的任何選項使用。 如果選項的 InvocationValue 是空的,函式會將 pdwDataType 設定為上方,設定S_OK。
OrderDependencyValue pdwDataType:kADT_LONG

pbData:這個選項的PPD OrderDependency 或 NonUIOrderDependency 關鍵詞所指定的相對順序。 請注意,這些關鍵詞的第一個參數是轉換成LONG並傳回的實數。

imfNeeded: sizeof(LONG)

此選項屬性僅適用於具有 PPD 中 OrderDependency 或*NonUIOrderDependency 項目的選項,而且專案不會省略 optionKeyword。
OrderDependencySection pdwDataType:kADT_ASCII

pbData:以 Null 結束的 ASCII 字串串,其中包含下列其中一個區段名稱:“ExitServer” “Prolog” “DocumentSetup” “PageSetup” “JCLSetup” “AnySetup”

imfNeeded:p bData 所指向 ASCII 字串的位元組計數(包括 Null 終止符)

此選項屬性僅適用於在PPD中具有OrderDependency或 NonUIOrderDependency專案,且專案不會省略 optionKeyword 的選項。

特定選項屬性的輸出參數

除了稍早所述的一般選項屬性之外,下表所列的選項屬性在可用時可能會有限制。 某些屬性可供特定 PPD 功能的所有選項使用,而其他屬性則僅適用於其 PPD 功能的特定選項。 每個選項屬性都會列出任何這類限制。

關鍵字 Option 屬性 輸出參數
InputSlot
RequiresPageRegion pdwDataType:kADT_BOOL

pbData如果 PageRegion 調用程式代碼必須使用 InputSlot 調用程式代碼傳送,則為 TRUE,否則為 FALSE。 這是以PPD的RequiresPageRegion 關鍵詞為基礎。 如果省略此輸入位置選項的 關鍵詞, 則此屬性會傳回TRUE

imfNeeded: sizeof(BOOL)

此選項屬性適用於 「InputSlot」 PPD 功能的任何選項,但驅動程式產生的選項 「*UseFormTrayTable」 除外。
OutputBin
OutputOrderReversed pdwDataType:kADT_BOOL

pbData如果 binOption 的輸出順序為 “Reverse”,則為 TRUE;如果輸出順序為 “Normal”,則為 FALSE。 這是以PPD的DefaultOutputOrder和 ageStackOrder 關鍵詞為基礎。

imfNeeded: sizeof(BOOL)

此選項屬性可供 「OutputBin」 PPD 功能的任何選項使用。
PageSize
ImageableArea pdwDataType:kADT_RECT

pbData:P ageSize 選項的可影像區域周框方塊,如PPD的ImageableArea 關鍵詞所指定,會在 RECT 結構中傳回,其左邊和底部成員包含 llx 和 lly 值,以及其右上層成員包含 urx 和 ury 值。 所有值都是以微分為單位。 PPD 的 llx 和 lly 值會四捨五入為最接近的整數,然後再轉換成密克羅。 PPD 的 urx 和 ury 值會四捨五入為最接近的整數,然後再轉換成密數。

imfNeeded: sizeof(RECT)

此選項屬性可用於 「PageSize」 PPD 功能的任何選項,但 「CustomPageSize」 選項除外。
PaperDimension pdwDataType:kADT_SIZE

pbData:P ageSize 選項的實體維度,如PPD的PaperDimension關鍵詞所指定,會在SIZE結構中傳回,其 cx成員包含寬度值,而 cy 成員包含高度值。 所有值都是以微分為單位。

imfNeeded: sizeof(SIZE)

此選項屬性適用於 「PageSize」 PPD 功能的任何選項,但 「CustomPageSize」 選項除外。
PageSize:CustomPageSize
HWMargins pdwDataType:kADT_RECT

pbData:P PD 的 HWMargins 關鍵詞所指定的四個值會在 RECT 結構中傳回。 所有值都是以微分為單位。

imfNeeded: sizeof(RECT)

此選項屬性僅適用於 「PageSize」 PPD 功能的 「CustomPageSize」 選項。
MaxMediaHeight pdwDataType:kADT_DWORD

pbData:由PPD的 *MaxMediaHeight 關鍵詞所指定的值,以微分為單位。

imfNeeded: sizeof(DWORD)

此選項屬性僅適用於 「PageSize」 PPD 功能的 「CustomPageSize」 選項。
MaxMediaWidth pdwDataType:kADT_DWORD

pbData:由PPD的 MaxMediaWidth 關鍵詞所指定的值,以微分為單位。

imfNeeded: sizeof(DWORD)

此選項屬性僅適用於 「PageSize」 PPD 功能的 「CustomPageSize」 選項。
ParamCustomPageSize pdwDataType:kADT_CUSTOMSIZEPARAMS

pbData:CUSTOMPARAM_MAX項目的陣列,其中每個元素都是 CUSTOMSIZEPARAM 結構。 此陣列的每個元素都會儲存PPD的 ParamCustomPageSize 關鍵詞 paramOption 專案中指定的值。 對於 「Orientation」 以外的 paramOption,lMinVal 和 lMaxVal 值會以微為單位。 對於 「Orientation」,lMinVal 和 lMaxVal 值的範圍是 [0, 3]。

imfNeeded: sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX

此選項屬性僅適用於 「PageSize」 PPD 功能的 「CustomPageSize」 選項。

如需詳細資訊,請參閱 ParamCustomPageSize 上的下列注意事項。
InstalledMemory
VMOption pdwDataType:kADT_DWORD

pbData:P PD 的 VMOption 關鍵詞所指定的值,如果 PPD 未指定此選項的 VMOption 關鍵詞,則為 0。

imfNeeded: sizeof(DWORD)

此選項屬性可供 「InstalledMemory」 PPD 功能的任何選項使用。
FCacheSize pdwDataType:kADT_DWORD

pbData:P PD 的 FCacheSize 關鍵詞所指定的值,如果 PPD 未指定此選項的 FCacheSize 關鍵詞,則為 0。

imfNeeded: sizeof(DWORD)

此選項屬性可供 「InstalledMemory」 PPD 功能的任何選項使用。

ParamCustomPageSize 上的附注

以下範例程式代碼示範如何取得 「ParamCustomPageSize Width」 專案的原始順序、最小值和最大值。 printoem.h 中定義的CUSTOMPARAM_WIDTH常數,表示 CUSTOMSIZEPARAM 結構的位移,其中包含與 Width 項目相關的資訊。 這個結構是構成這類結構陣列的CUSTOMPARAM_MAX CUSTOMSIZEPARAM 結構之一。 printoem.h 標頭會定義一組名為 CUSTOMPARAM_XXX 的常數,列出此陣列中結構的位移(Width、Height、WidthOffset、HeightOffset 和 Orientation)。

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;