共用方式為


使用 GetOptionAttribute

重要

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

如需詳細資訊,請參閱 列印支援應用程式 v1 和 v2 設計指南

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

一般選項屬性的輸出參數

在下表中,pdwDataType 參數取值自 EATTRIBUTE_DATATYPE 列舉型別。

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

pbData: 以 Null 結尾的 Unicode 字串,用於選項關鍵字名稱的翻譯字串

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

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

pbData:選項的 InvocationValue 位元組陣列

pcbNeeded:pbData 所指向之二進位數據的位元組計數

此選項屬性適用於任何 EnumOptions 可以在 PPD 功能上傳回的選項。 如果選項的 InvocationValue 是空的,函式會將 pdwDataType 設定為上面所述,將 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:以 Null 結束的 ASCII 字串串,其中包含下列其中一個區段名稱:“ExitServer” “Prolog” “DocumentSetup” “PageSetup” “JCLSetup” “AnySetup”

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

此選項屬性僅適用於在 PPD 中選項含有 OrderDependency 或 NonUIOrderDependency 項目,且該項目不會省略 optionKeyword。

特定選項屬性的輸出參數

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

關鍵字 選項屬性 輸出參數
輸入插槽
RequiresPageRegion pdwDataType:kADT_BOOL

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

pcbNeeded:sizeof(BOOL)

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

pbDataTRUE 如果 binOption 的輸出順序為「Reverse」,FALSE 如果輸出順序為「Normal」。 這是以PPD的DefaultOutputOrder和 ageStackOrder 關鍵詞為基礎。

pcbNeeded:sizeof(BOOL)

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

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

pcbNeeded:sizeof(RECT)

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

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

pcbNeeded:sizeof(SIZE)

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

pbData: PPD 的 HWMargins 關鍵詞所指定的四個值會在 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」條目中指定的值。 對於 「Orientation」 以外的 paramOption,lMinVal 和 lMaxVal 值會以微為單位。 對於 「Orientation」,lMinVal 和 lMaxVal 值的範圍是 [0, 3]。

pcbNeeded:sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX

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

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

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

pcbNeeded:sizeof(DWORD)

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

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

pcbNeeded:sizeof(DWORD)

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

ParamCustomPageSize 上的附注

以下範例程式代碼示範如何取得「ParamCustomPageSize Width」項目的原始順序、最小值和最大值。 printoem.h 中定義的 CUSTOMPARAM_WIDTH 常數,指出包含與 Width 項目相關資訊的 CUSTOMSIZEPARAM 結構的偏移量。 這個結構是構成這類結構陣列的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;