Uso di GetOptionAttribute
Importante
La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. 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 Piattaforma di stampa moderna e 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 FALSE 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 FALSE 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;