Korzystanie z polecenia GetOptionAttribute

Ważne

Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.

Aby uzyskać więcej informacji, zobacz Print Support App v1 and v2 design guide (Przewodnik projektowania aplikacji do obsługi wydruku w wersji 1 i 2).

Ta funkcja jest obsługiwana tylko w przypadku funkcji sterownika drukarki PostScript (PPD). Jeśli określony atrybut jest niedostępny, funkcja GetOptionAttribute zwraca E_INVALIDARG.

Parametry wyjściowe dla atrybutów opcji ogólnych

W poniższej tabeli parametr pdwDataType przyjmuje wartości typu EATTRIBUTE_DATATYPE wyliczonego.

Atrybut opcji ogólnej Parametry wyjściowe
Nazwa wyświetlana pdwDataType: kADT_UNICODE

pbData: ciąg Unicode zakończony znakiem null, będący tłumaczeniem nazwy słowa kluczowego opcji

pcbNeeded: liczba bajtów ciągu Unicode wskazywanego przez pbData (w tym terminator null)

Ten atrybut opcji jest dostępny dla dowolnej opcji, którą enumOptions mogą zwrócić w funkcji PPD.
Wywołanie pdwDataType: kADT_BINARY

pbData: tablica bajtów dla wartości wywołania opcji

pcbNeeded: liczba bajtów danych binarnych wskazywanych przez pbData

Ten atrybut opcji jest dostępny dla dowolnej opcji, którą enumOptions mogą zwrócić w funkcji PPD. Jeśli InvocationValue opcji jest puste, funkcja ustawia pdwDataType jak powyżej, ustawia pcbNeeded = 0, a następnie zwraca S_OK.
OrderDependencyValue pdwDataType: kADT_LONG

pbData: względna kolejność określona przez słowo kluczowe OrderDependency lub NonUIOrderDependency dla tej opcji. Zwróć uwagę, że pierwszym parametrem tych słów kluczowych jest liczba rzeczywista, która jest konwertowana na wartość LONG i zwracana.

Rozmiar buforu potrzebnego: sizeof(LONG)

Ten atrybut opcji jest dostępny tylko dla opcji, która ma właściwość OrderDependency lub*NonUIOrderDependency we wpisie PPD, a wpis nie pomija opcjiKeyword.
OrderDependencySection pdwDataType: kADT_ASCII

pbData: ciąg ASCII zakończony o wartości null zawierający jedną z następujących nazw sekcji: "ExitServer" "Prolog" "DocumentSetup" "PageSetup" "JCLSetup" "AnySetup"

pcbNeeded: liczba bajtów ciągu ASCII wskazywana przez pbData (w tym terminator null)

Ten atrybut opcji jest dostępny tylko dla opcji, która ma wpis OrderDependency lub NonUIOrderDependency w PPD, a w tym wpisie optionKeyword nie jest pomijany.

Parametry wyjściowe dla określonych atrybutów opcji

Oprócz ogólnych atrybutów opcji opisanych wcześniej atrybuty opcji wymienione w poniższych tabelach mogą mieć ograniczenia dotyczące ich dostępności. Niektóre atrybuty są dostępne dla wszystkich opcji określonej funkcji PPD, podczas gdy inne są dostępne tylko dla określonych opcji ich funkcji PPD. Wszystkie takie ograniczenia są wyświetlane dla każdego atrybutu opcji.

Keyword Atrybut opcji Parametry wyjściowe
InputSlot
RequiresPageRegion pdwDataType: kADT_BOOL

pbData: PRAWDA, jeśli kod wywołania PageRegion musi zostać wysłany przy użyciu kodu wywołania InputSlot i FALSE w przeciwnym razie. Jest to oparte na kluczowym słowie RequiresPageRegion PPD. Jeśli słowo kluczowe zostanie pominięte dla tej opcji miejsca wejściowego, dla tego atrybutu zostanie zwrócona wartość TRUE .

pcbNeeded: sizeof(BOOL)

Ten atrybut opcji jest dostępny dla dowolnej opcji funkcji PPD „InputSlot”, z wyjątkiem opcji generowanej przez sterownik „*UseFormTrayTable”.
OutputBin
OutputOrderReversed pdwDataType: kADT_BOOL

pbData: TRUE, jeśli kolejność danych wyjściowych binOption jest "Reverse", a FALSE, jeśli kolejność danych wyjściowych jest "Normal". Jest to oparte na słowach kluczowych PPD: DefaultOutputOrder i ageStackOrder.

pcbNeeded: sizeof(BOOL)

Ten atrybut opcji jest dostępny dla dowolnej opcji funkcji PPD "OutputBin".
Pagesize
Obszar drukowalny pdwDataType: kADT_RECT

pbData: pole ograniczające obszar obrazu opcji PageSize, określone przez słowo kluczowe ImageableArea PPD, jest zwracane w strukturze RECT, którego lewe i dolne pola zawierają wartości llx i lly, a prawe i górne pola zawierają wartości urx i ury. Wszystkie wartości znajdują się w mikronach. Wartości llx i lly PPD są zaokrąglane do najbliższej liczby całkowitej przed przekonwertowaniem na mikrony. Wartości urx i ury PPD są zaokrąglane w dół do najbliższej liczby całkowitej przed przekonwertowaniem na mikrony.

pcbNeeded: rozmiar(RECT)

Ten atrybut opcji jest dostępny dla dowolnej opcji funkcji PPD "PageSize", z wyjątkiem opcji "CustomPageSize".
PaperDimension pdwDataType: kADT_SIZE

pbData: fizyczny wymiar opcji PageSize, określony przez słowo kluczowe PaperDimension PPD, jest zwracany w strukturze SIZE, którego element członkowski cx zawiera wartość szerokości i którego element członkowski cy zawiera wartość wysokości. Wszystkie wartości znajdują się w mikronach.

pcbNeeded: sizeof(SIZE)

Ten atrybut opcji jest dostępny dla dowolnej opcji funkcji PPD "PageSize", z wyjątkiem opcji "CustomPageSize".
PageSize: CustomPageSize
HWMargins pdwDataType: kADT_RECT

pbData: cztery wartości określone przez słowo kluczowe HWMargins PPD są zwracane w strukturze RECT. Wszystkie wartości znajdują się w mikronach.

pcbNeeded: sizeof(RECT)

Ten atrybut opcji jest dostępny tylko dla opcji "CustomPageSize" funkcji PPD "PageSize".
MaxMediaHeight pdwDataType: kADT_DWORD

pbData: wartość określona przez słowo kluczowe *MaxMediaHeight PPD w mikronach.

pcbNeeded: sizeof(DWORD)

Ten atrybut opcji jest dostępny tylko dla opcji "CustomPageSize" funkcji PPD "PageSize".
MaxMediaWidth pdwDataType: kADT_DWORD

pbData: wartość określona przez słowo kluczowe MaxMediaWidth ppD w mikronach.

pcbNeeded: sizeof(DWORD)

Ten atrybut opcji jest dostępny tylko dla opcji "CustomPageSize" w funkcji "PageSize" PPD.
ParamCustomPageSize pdwDataType: kADT_CUSTOMSIZEPARAMS

pbData: tablica składająca się z CUSTOMPARAM_MAX elementów, z których każdy jest strukturą CUSTOMSIZEPARAM. Każdy element tej tablicy przechowuje wartości określone we wpisie paramOption słowa kluczowego ParamCustomPageSize w PPD. W przypadku paramOption innych niż "Orientacja", wartości lMinVal i lMaxVal są podawane w mikronach. W przypadku wartości "Orientacja" wartości lMinVal i lMaxVal znajdują się w zakresie [0, 3].

pcbNeeded: sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX

Ten atrybut opcji jest dostępny tylko dla opcji "CustomPageSize" funkcji PPD "PageSize".

Aby uzyskać więcej informacji, zobacz poniższą notatkę dotyczącą parametru ParamCustomPageSize.
Zainstalowana pamięć
VmOption pdwDataType: kADT_DWORD

pbData: wartość określona przez słowo kluczowe VMOption ppD lub 0, jeśli ppD nie określa słowa kluczowego VMOption dla tej opcji.

pcbNeeded: sizeof(DWORD)

Ten atrybut opcji jest dostępny dla dowolnej opcji funkcji PPD "InstalledMemory".
FCacheSize pdwDataType: kADT_DWORD

pbData: wartość określona przez słowo kluczowe FCacheSize ppD lub 0, jeśli PPD nie określa słowa kluczowego FCacheSize dla tej opcji.

pcbNeeded: sizeof(DWORD)

Ten atrybut opcji jest dostępny dla dowolnej opcji funkcji PPD "InstalledMemory".

Uwaga dotycząca parametru ParamCustomPageSize

Oto przykładowy kod, który pokazuje, jak uzyskać oryginalną kolejność pliku PPD, minimalną i maksymalną wartość wpisu "ParamCustomPageSize Width". Stała CUSTOMPARAM_WIDTH zdefiniowana w pliku printoem.h wskazuje przesunięcie struktury CUSTOMSIZEPARAM, która zawiera informacje związane z polem Width. Ta struktura jest jedną ze struktur CUSTOMSIZEPARAM spośród CUSTOMPARAM_MAX, które tworzą tablicę takich struktur. Nagłówek printoem.h definiuje zestaw stałych o nazwie CUSTOMPARAM_XXX wyświetlając przesunięcia struktur w tej tablicy (Width, Height, WidthOffset, HeightOffset i 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;