Uso di GetOptionAttribute

Importante

Ti consigliamo di usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi per stampanti.

Per altre informazioni, vedere la Guida alla progettazione dell'app di supporto per la stampa.

Questa funzione è supportata solo per le funzionalità ppd (PostScript Printer Driver). Se un determinato attributo non è disponibile, GetOptionAttribute restituisce E_INVALIDARG.

Parametri di output per gli attributi di opzione generali

Nella tabella seguente il parametro pdwDataType accetta i valori del tipo enumerato EATTRIBUTE_DATATYPE.

Attributo di opzione generale Parametri di output
DisplayName pdwDataType: kADT_UNICODE

pbData: stringa Unicode con terminazione null della stringa di traduzione del nome della parola chiave option

pcbNeeded: numero di byte della stringa Unicode a cui punta pbData (incluso il terminatore null)

Questo attributo di opzione è disponibile per qualsiasi opzione che EnumOptions può restituire in una funzionalità PPD.
Chiamata pdwDataType: kADT_BINARY

pbData: matrice di byte per l'opzione InvocationValue

pcbNeeded: numero di byte dei dati binari a cui punta pbData

Questo attributo di opzione è disponibile per qualsiasi opzione che EnumOptions può restituire in una funzionalità PPD. Se l'opzione InvocationValue è vuota, la funzione imposta pdwDataType come sopra, imposta pcbNeeded = 0 e quindi restituisce S_OK.
OrderDependencyValue pdwDataType: kADT_LONG

pbData: l'ordine relativo specificato dalla parola chiave OrderDependency o NonUIOrderDependency di PPD per questa opzione. Si noti che il primo parametro di queste parole chiave è un numero reale convertito in long e restituito.

pcbNeeded: sizeof(LONG)

Questo attributo di opzione è disponibile solo per un'opzione con una voce OrderDependency o*NonUIOrderDependency nel PPD e la voce non omette optionKeyword.
OrderDependencySection pdwDataType: kADT_ASCII

pbData: stringa ASCII con terminazione Null contenente uno dei nomi di sezione seguenti: "ExitServer" "Prolog" "DocumentSetup" "PageSetup" "JCLSetup" "AnySetup"

pcbNeeded: numero di byte della stringa ASCII a cui punta pbData (incluso il terminatore null)

Questo attributo di opzione è disponibile solo per un'opzione con una voce OrderDependency o NonUIOrderDependency nel PPD e la voce non omette optionKeyword.

Parametri di output per attributi di opzione specifici

Oltre agli attributi di opzione generali descritti in precedenza, gli attributi di opzione elencati nelle tabelle seguenti possono avere limitazioni quando sono disponibili. Alcuni attributi sono disponibili per tutte le opzioni di una funzionalità PPD specifica, mentre altre sono disponibili solo per opzioni specifiche della funzionalità PPD. Tutte queste limitazioni sono elencate per ogni attributo di opzione.

Parola chiave Attributo option Parametri di output
InputSlot
RequiresPageRegion pdwDataType: kADT_BOOL

pbData: TRUE se il codice di chiamata PageRegion deve essere inviato con il codice di chiamata InputSlot e FAL edizione Standard in caso contrario. Si basa sulla parola chiave RequiresPageRegion di PPD. Se la parola chiave viene omessa per questa opzione dello slot di input, viene restituito TRUE per questo attributo.

pcbNeeded: sizeof(BOOL)

Questo attributo di opzione è disponibile per qualsiasi opzione della funzionalità PPD "InputSlot", ad eccezione dell'opzione generata dal driver "*UseFormTrayTable".
OutputBin
OutputOrderReversed pdwDataType: kADT_BOOL

pbData: TRUE se l'ordine di output di binOption è "Inverso" e FAL edizione Standard se l'ordine di output è "Normale". Si basa sulle parole chiave DefaultOutputOrder e ageStackOrder di PPD.

pcbNeeded: sizeof(BOOL)

Questo attributo di opzione è disponibile per qualsiasi opzione della funzionalità PPD "OutputBin".
Pagesize
ImageableArea pdwDataType: kADT_RECT

pbData: un rettangolo delimitatore dell'area immaginebile dell'opzione PageSize, come specificato dalla parola chiave ImageableArea di PPD, viene restituito in una struttura RECT, i cui membri sinistro e inferiore contengono i valori llx e lly e i cui membri destro e superiore contengono i valori urx e ury. Tutti i valori sono inμs. I valori llx e lly del PPD vengono arrotondati fino all'intero più vicino prima di essere convertitiini. I valori urx e ury del PPD vengono arrotondati per difetto all'intero più vicino prima di essere convertiti in micromicro.

pcbNeeded: sizeof(RECT)

Questo attributo di opzione è disponibile per qualsiasi opzione della funzionalità PPD "PageSize", ad eccezione dell'opzione "CustomPageSize".
PaperDimension pdwDataType: kADT_SIZE

pbData: la dimensione fisica dell'opzione PageSize, come specificato dalla parola chiave PaperDimension del PPD, viene restituita in una struttura SIZE, il cui membro cx contiene il valore di larghezza e il cui membro cy contiene il valore di altezza. Tutti i valori sono inμs.

pcbNeeded: sizeof(SIZE)

Questo attributo di opzione è disponibile per qualsiasi opzione della funzionalità PPD "PageSize", ad eccezione dell'opzione "CustomPageSize".
PageSize: CustomPageSize
HWMargins pdwDataType: kADT_RECT

pbData: i quattro valori specificati dalla parola chiave HWMargins di PPD vengono restituiti in una struttura RECT. Tutti i valori sono inμs.

pcbNeeded: sizeof(RECT)

Questo attributo di opzione è disponibile solo per l'opzione "CustomPageSize" della funzionalità PPD "PageSize".
MaxMediaHeight pdwDataType: kADT_DWORD

pbData: valore specificato dalla parola chiave *MaxMediaHeight del PPD, inμs.

pcbNeeded: sizeof(DWORD)

Questo attributo di opzione è disponibile solo per l'opzione "CustomPageSize" della funzionalità PPD "PageSize".
MaxMediaWidth pdwDataType: kADT_DWORD

pbData: valore specificato dalla parola chiave MaxMediaWidth di PPD, inμs.

pcbNeeded: sizeof(DWORD)

Questo attributo di opzione è disponibile solo per l'opzione "CustomPageSize" della funzionalità PPD "PageSize".
ParamCustomPageSize pdwDataType: kADT_CUSTOMSIZEPARAMS

pbData: matrice di elementi CUSTOMPARAM_MAX, in cui ogni elemento è una struttura CUSTOMSIZEPARAM . Ogni elemento di questa matrice archivia i valori specificati nella voce paramOption della parola chiave ParamCustomPageSize di PPD. Per i valori paramOption diversi da "Orientation", i valori lMinVal e lMaxVal si trovano inμs. Per "Orientation", i valori lMinVal e lMaxVal sono compresi nell'intervallo di [0, 3].

pcbNeeded: sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX

Questo attributo di opzione è disponibile solo per l'opzione "CustomPageSize" della funzionalità PPD "PageSize".

Per altre informazioni, vedere la nota seguente su ParamCustomPageSize.
InstalledMemory
VMOption pdwDataType: kADT_DWORD

pbData: valore specificato dalla parola chiave VMOption di PPD oppure 0 se il PPD non specifica la parola chiave VMOption per questa opzione.

pcbNeeded: sizeof(DWORD)

Questo attributo di opzione è disponibile per qualsiasi opzione della funzionalità PPD "InstalledMemory".
FCacheSize pdwDataType: kADT_DWORD

pbData: valore specificato dalla parola chiave FCacheSize di PPD oppure 0 se il PPD non specifica la parola chiave FCacheSize per questa opzione.

pcbNeeded: sizeof(DWORD)

Questo attributo di opzione è disponibile per qualsiasi opzione della funzionalità PPD "InstalledMemory".

Nota su ParamCustomPageSize

Ecco un codice di esempio che mostra come ottenere l'ordine originale, min e max del file PPD della voce "ParamCustomPageSize Width". La costante CUSTOMPARAM_WIDTH, definita in printoem.h, indica l'offset della struttura CUSTOMSIZEPARAM che contiene le informazioni correlate alla voce Width. Questa struttura è una delle strutture CUSTOMPARAM_MAX CUSTOMSIZEPARAM che formano una matrice di tali strutture. L'intestazione printoem.h definisce un set di costanti denominate CUSTOMPARAM_XXX elencare gli offset delle strutture in questa matrice (Width, Height, WidthOffset, HeightOffset e 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;