重要
新式列印平臺是 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 pbData:TRUE 如果 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 值會四捨五入為最接近的整數,然後再轉換成密數。 此選項屬性可用於 「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 結構中傳回。 所有值都是以微分為單位。 此選項屬性僅適用於 「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;