GetOptionAttribute 사용

Important

최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.

자세한 내용은 최신 인쇄 플랫폼 및 인쇄 지원 앱 디자인 가이드를 참조하세요.

이 함수는 PPD(PostScript Printer Driver) 기능에 대해서만 지원됩니다. 특정 특성을 사용할 수 없는 경우 GetOptionAttribute 는 E_INVALIDARG 반환합니다.

일반 옵션 특성에 대한 출력 매개 변수

다음 표에서 pdwDataType 매개 변수는 EATTRIBUTE_DATATYPE 열거형 형식의 값을 사용합니다.

일반 옵션 특성 출력 매개 변수
DisplayName pdwDataType: kADT_UNICODE

pbData: 옵션 키워드 이름의 번역 문자열의 null로 끝나는 유니코드 문자열

pcbNeeded: pbData가 가리키는 유니코드 문자열의 바이트 수(null 종결자 포함)

이 옵션 특성은 EnumOptionsPPD 기능에서 반환할 수 있는 모든 옵션에서 사용할 수 있습니다.
호출 pdwDataType: kADT_BINARY

pbData: 옵션의 InvocationValue에 대한 바이트 배열

pcbNeeded: pbData에서 가리키는 이진 데이터의 바이트 수

이 옵션 특성은 EnumOptionsPPD 기능에서 반환할 수 있는 모든 옵션에서 사용할 수 있습니다. 옵션의 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: "ExitServer" "Prolog" "DocumentSetup" "PageSetup" "JCLSetup" "AnySetup" 섹션 이름 중 하나를 포함하는 null로 종료된 ASCII 문자열

pcbNeeded: pbData가 가리키는 ASCII 문자열의 바이트 수(null 종결자 포함)

이 옵션 특성은 PPD에 OrderDependency 또는 NonUIOrderDependency 항목이 있는 옵션에만 사용할 수 있으며 항목은 optionKeyword를 생략하지 않습니다.

특정 옵션 특성에 대한 출력 매개 변수

앞에서 설명한 일반적인 옵션 특성 외에도 다음 표에 나열된 옵션 특성에는 사용 가능한 시기에 대한 제한 사항이 있을 수 있습니다. 일부 특성은 특정 PPD 기능의 모든 옵션에서 사용할 수 있으며, 다른 특성은 PPD 기능의 특정 옵션에서만 사용할 수 있습니다. 이러한 제한 사항은 각 옵션 특성에 대해 나열됩니다.

키워드 옵션 특성 출력 매개 변수
InputSlot
RequiresPageRegion pdwDataType: kADT_BOOL

pbData: PageRegion 호출 코드를 InputSlot 호출 코드와 함께 보내야 하는 경우 TRUE 이고 , 그렇지 않으면 FALSE 입니다. 이는 PPD의 RequiresPageRegion 키워드를 기반으로 합니다. 이 입력 슬롯 옵션 에 대해 키워드를 생략하면 이 특성에 대해 TRUE 가 반환됩니다.

pcbNeeded: sizeof(BOOL)

이 옵션 특성은 드라이버 생성 옵션 "*UseFormTrayTable"을 제외하고 "InputSlot" PPD 기능의 모든 옵션에서 사용할 수 있습니다.
OutputBin
OutputOrderReversed pdwDataType: kADT_BOOL

pbData: binOption의 출력 순서가 "Reverse"이면 TRUE 이고 출력 순서가 "Normal"이면 FALSE 입니다. 이는 PPD의 DefaultOutputOrder 및 ageStackOrder 키워드를 기반으로 합니다.

pcbNeeded: sizeof(BOOL)

이 옵션 특성은 "OutputBin" PPD 기능의 모든 옵션에서 사용할 수 있습니다.
PageSize
ImageableArea pdwDataType: kADT_RECT

pbData: PPD의 ImageableArea 키워드로 지정된 PageSize 옵션의 이미지 가능 영역 경계 상자는 왼쪽 및 아래쪽 멤버에 llx 및 lly 값이 포함되고 오른쪽 위쪽 멤버에 urx 및 ury 값이 포함된 RECT 구조로 반환됩니다. 모든 값은 미크론으로 표시됩니다. PPD의 llx 및 lly 값은 미크론으로 변환되기 전에 가장 가까운 정수로 반올림됩니다. PPD의 urx 및 ury 값은 미크론으로 변환되기 전에 가장 가까운 정수로 반올림됩니다.

pcbNeeded: sizeof(RECT)

이 옵션 특성은 "CustomPageSize" 옵션을 제외한 "PageSize" PPD 기능의 모든 옵션에서 사용할 수 있습니다.
PaperDimension pdwDataType: kADT_SIZE

pbData: PPD의 PaperDimension 키워드에 지정된 PageSize 옵션의 물리적 차원은 cx 멤버에 너비 값이 포함되고 cy 멤버에 높이 값이 포함된 SIZE 구조체로 반환됩니다. 모든 값은 미크론으로 표시됩니다.

pcbNeeded: sizeof(SIZE)

이 옵션 특성은 "CustomPageSize" 옵션을 제외하고 "PageSize" PPD 기능의 모든 옵션에서 사용할 수 있습니다.
PageSize: CustomPageSize
HWMargins pdwDataType: kADT_RECT

pbData: PPD의 HWMargins 키워드로 지정된 4개의 값이 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: 각 요소가 CUSTOMSIZEPARAM 구조체인 CUSTOMPARAM_MAX 요소의 배열입니다. 이 배열의 각 요소는 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: PPD의 VMOption 키워드로 지정된 값이거나, PPD가 이 옵션에 대해 VMOption 키워드를 지정하지 않는 경우 0입니다.

pcbNeeded: sizeof(DWORD)

이 옵션 특성은 "InstalledMemory" PPD 기능의 모든 옵션에서 사용할 수 있습니다.
FCacheSize pdwDataType: kADT_DWORD

pbData: PPD의 FCacheSize 키워드로 지정된 값이거나, PPD가 이 옵션에 대해 FCacheSize 키워드를 지정하지 않는 경우 0입니다.

pcbNeeded: sizeof(DWORD)

이 옵션 특성은 "InstalledMemory" PPD 기능의 모든 옵션에서 사용할 수 있습니다.

ParamCustomPageSize에 대한 참고 사항

다음은 "ParamCustomPageSize Width" 항목의 PPD 파일의 원래 순서, 최소 및 최대값을 가져오는 방법을 보여 주는 몇 가지 샘플 코드입니다. printoem.h에 정의된 CUSTOMPARAM_WIDTH 상수는 Width 항목과 관련된 정보를 포함하는 CUSTOMSIZEPARAM 구조체의 오프셋을 나타냅니다. 이 구조체는 이러한 구조의 배열을 형성하는 CUSTOMPARAM_MAX CUSTOMSIZEPARAM 구조체 중 하나입니다. printoem.h 헤더는 이 배열의 구조 오프셋(Width, Height, WidthOffset, HeightOffset 및 Orientation)을 나열하는 CUSTOMPARAM_XXX 명명된 상수 집합을 정의합니다.

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;