IPrintOemUI::D eviceCapabilities 메서드(prcomoem.h)

메서드 IPrintOemUI::DeviceCapabilities 를 사용하면 사용자 인터페이스 플러그 인이 사용자 지정된 디바이스 기능을 지정할 수 있습니다.

구문

HRESULT DeviceCapabilities(
  POEMUIOBJ poemuiobj,
  HANDLE    hPrinter,
  PWSTR     pDeviceName,
  WORD      wCapability,
  PVOID     pOutput,
  PDEVMODE  pPublicDM,
  PVOID     pOEMDM,
  DWORD     dwOld,
  DWORD     *dwResult
);

매개 변수

poemuiobj

OEMUIOBJ 구조체에 대한 호출자 제공 포인터입니다.

hPrinter

프린터 디바이스에 대한 호출자 제공 핸들입니다.

pDeviceName

디바이스 이름을 나타내는 문자열에 대한 호출자 제공 포인터입니다.

wCapability

메서드가 반환해야 하는 정보의 유형을 나타내는 호출자 제공 플래그입니다. 플래그 목록은 DrvDeviceCapabilities 함수에 대한 설명을 참조하세요.

pOutput

요청된 정보를 수신하기 위해 버퍼에 대한 호출자 제공 포인터입니다. 반환되는 정보 유형은 wCapability에 지정된 플래그에 따라 달라집니다.

pPublicDM

유효성이 검사된 DEVMODEW 구조체에 대한 호출자 제공 포인터입니다.

pOEMDM

사용자 인터페이스 플러그 인의 프라이빗 DEVMODEW 구조체 멤버에 대한 호출자 제공 포인터입니다.

dwOld

프린터 드라이버의 DrvDeviceCapabilities 함수 또는 다른 사용자 인터페이스 플러그 인에서 호출자가 제공한 반환 값입니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

dwResult

wCapability로 지정된 플래그에 종속된 반환 값입니다. 자세한 내용은 DrvDeviceCapabilities 함수에 대한 설명 및 다음 설명 섹션을 참조하세요.

반환 값

메서드는 다음 값 중 하나를 반환해야 합니다.

반환 코드 Description
S_OK
작업에 성공했습니다.
S_DEVCAP_OUTPUT_FULL_REPLACEMENT
플러그 인은 자체 용도로 pOutput 매개 변수가 가리키는 버퍼를 사용하려고 합니다. 이 반환 값은 prcomoem.h에 정의되어 있습니다. 이 반환 값을 사용하는 시기에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.
E_FAIL
작업이 실패했습니다.
E_NOTIMPL
메서드가 구현되지 않았습니다.

설명

사용자 인터페이스 플러그 인의 IPrintOemUI::DeviceCapabilities 메서드는 사용자 모드 프린터 인터페이스 DLL에서 내보낸 DrvDeviceCapabilities 함수와 동일한 유형의 작업을 수행합니다. 메서드는 프린터에서 제공하는 기능을 지정합니다.

메서드를 IPrintOemUI::DeviceCapabilities 사용하여 기능에 대한 Unidrv 지원을 선점하거나 프린터 드라이버에서 제공하지 않는 기능을 추가할 수 있습니다. 드라이버는 DrvDeviceCapabilities 함수 내에서 를 호출 IPrintOemUI::DeviceCapabilities 합니다.

메서드가 IPrintOemUI::DeviceCapabilities 수신된 DC_FIELDS 플래그에 대한 응답으로 적절한 비트를 설정하여 기능에 대한 사용자 지정 지원을 나타내는 경우 사용자 지정된 코드는 기능을 완전히 지원해야 합니다. 전체 지원에는 일반적으로 메서드 호출 IPrintOemUI::DeviceCapabilities 에 대한 응답으로 기능에 대한 정보를 반환하고 기능을 구현하기 위한 적절한 사용자 모드 또는 커널 모드 코드를 제공하는 것이 포함됩니다.

여러 사용자 인터페이스 플러그 인에서 메서드를 내보낼 경우 IPrintOemUI::DeviceCapabilities 플러그 인이 설치를 위해 지정된 순서대로 메서드가 호출됩니다. 플러그 인의 IPrintOemUI::DeviceCapabilities 메서드가 호출 될 때마다 해당 dwOld 입력 값은 이전에 호출 된 플러그 인의 IPrintOemUI::DeviceCapabilities 메서드에서 반환 값입니다. 호출된 첫 번째 플러그 인의 경우 dwOld 는 프린터 드라이버의 DrvDeviceCapabilities 함수의 반환 값을 포함합니다. 마찬가지로 pOutput 에서 가리키는 버퍼에는 입력에 이전에 호출 IPrintOemUI::DeviceCapabilities 된 메서드 또는 DrvDeviceCapabilities 함수가 배치한 모든 콘텐츠가 포함됩니다.

여러 사용자 인터페이스 플러그 인이 서로 함께 작동하려면 각 IPrintOemUI::DeviceCapabilities 메서드가 다음 규칙을 준수해야 합니다.

  • 사용자 인터페이스 플러그 인이 지정된 기능을 지원하지 않는 경우 해당 IPrintOemUI::DeviceCapabilities 메서드는 dwResult에서 dwOld 매개 변수의 내용만 반환해야 합니다.
  • 사용자 인터페이스 플러그 인이 기능을 지원하는 경우 해당 IPrintOemUI::DeviceCapabilities 메서드는 dwOldpOutput이 가리키는 버퍼의 내용을 무시해야 합니다. 지정된 기능을 지원함을 나타내는 데 적합한 반환 값 및 버퍼 콘텐츠를 제공해야 합니다. 메서드가 오류를 감지하면 dwResult에서 GDI_ERROR 반환해야 합니다.
  • 사용자 인터페이스 플러그 인이 pOutput이 가리키는 버퍼에서 받은 기능 정보를 수정하려면 해당 IPrintOemUI::DeviceCapabilities 메서드가 버퍼 내용을 수정하고 dwResult에서 적절한 반환 값을 반환해야 합니다. 예를 들어 wCapability 가 DC_FIELDS 경우 메서드는 dwOld에 설정된 비트로 설정해야 하는 비트 또는 를 반환하고 dwResult에서 OR 작업의 결과를 반환해야 합니다.
  • dwOld의 수신된 콘텐츠가 GDI_ERROR 경우에도 이전 규칙을 따라야 합니다.
드라이버의 DrvDeviceCapabilities 함수가 DC_FIELDS 플래그 집합을 사용하여 호출되면 함수는 모든 IPrintOemUI::DeviceCapabilities 메서드를 호출하고 DC_FIELDS 지정하고 모든 집합 비트의 합합을 호출자에게 반환합니다.

S_DEVCAP_OUTPUT_FULL_REPLACEMENT 반환 값은 Windows Vista에서 새로 추가되었으며 Unidrv 및 Pscript5 사용자 인터페이스 플러그 인 모두에 적용됩니다. 플러그 인은 pOutput 매개 변수가 가리키는 버퍼에 배치되는 내용을 완전히 제어해야 하는 경우에만 S_DEVCAP_OUTPUT_FULL_REPLACEMENT 반환 값을 사용해야 합니다. 플러그 인이 S_DEVCAP_OUTPUT_FULL_REPLACEMENT 반환할 때 Unidrv 또는 Pscript5 코어 드라이버는 pOutput 버퍼에 데이터를 배치하지 않습니다. 플러그 인은 DEVMODEW 구조의 설정( pPublicDM 및 pOEMDM 매개 변수가 가리키는)이 GPD 또는 PPD 파일에 지정된 것과 다른 디바이스 기능 데이터를 보고해야 한다는 것을 사용자 인터페이스 플러그 인에 나타낼 때 이 값을 반환해야 할 수 있습니다. 예를 들어 사진 인쇄를 지정하는 DEVMODEW 구조체에는 GPD 또는 PPD 파일에 지정된 것과 다른 용지 유형 집합이 필요할 수 있습니다. 이러한 상황에서 pOutputdwOld 매개 변수의 값에 관계없이 플러그 인은 S_DEVCAP_OUTPUT_FULL_REPLACEMENT 반환해야 하며 dwResult 매개 변수를 보고하려는 용지 형식의 수로 설정해야 합니다. pOutputNULL이 아닌 경우 플러그 인은 pOutput에서 가리키는 버퍼를 원하는 용지 유형 집합으로 채워야 하며, dwResult를 플러그 인에서 보고하려는 용지 유형 수로 설정해야 합니다.

여러 사용자 인터페이스 플러그 인이 동시에 활성화되고 그 중 하나가 S_DEVCAP_OUTPUT_FULL_REPLACEMENT 반환하는 경우 Unidrv 또는 Pscript5 코어 드라이버는 이 반환 값을 플러그 인이 전체 대체 출력 데이터를 제공하려는 것을 의미하도록 해석합니다. 따라서 핵심 드라이버는 플러그 인을 호출하기 전에 pOutput 버퍼에 데이터를 배치하지 않습니다. (핵심 드라이버는 설치에 지정된 순서대로 플러그 인을 호출합니다.)

핵심 드라이버가 pOutput 버퍼에 배치하는 값을 바꿀 필요가 없는 경우 플러그 인은 S_OK 반환해야 합니다. Unidrv 및 Pscript5 핵심 드라이버는 pOutput 버퍼를 사용하는 디바이스 기능에 대해서만 S_DEVCAP_OUTPUT_FULL_REPLACEMENT 반환 값을 인식합니다. 즉, wCapability 매개 변수가 다음 플래그 중 하나로 설정된 경우 입니다.

DC_PAPERNAMES

DC_PAPERS

DC_PAPERSIZE

DC_BINNAMES

DC_BINS

DC_NUP

DC_PERSONALITY

DC_MEDIAREADY

DC_MEDIATYPENAMES

DC_MEDIATYPES

DC_ENUMRESOLUTIONS

사용자 인터페이스 플러그 인을 만들고 설치하는 방법에 대한 자세한 내용은 Microsoft의 프린터 드라이버 사용자 지정을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 prcomoem.h(Prcomoem.h 포함)

추가 정보

DrvDeviceCapabilities

IPrintOemUI