다음을 통해 공유


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 함수에 대한 설명과 다음 주의 섹션을 참조하세요.

반환 값

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

반환 코드 묘사
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 메서드는 dwResultdwOld 매개 변수의 내용을 반환해야 합니다.
  • 사용자 인터페이스 플러그 인이 기능을 지원하는 경우 해당 IPrintOemUI::DeviceCapabilities 메서드는 dwOldpOutput가리키는 버퍼의 내용을 무시해야 합니다. 지정된 기능을 지원함을 나타내는 데 적합한 반환 값과 버퍼 콘텐츠를 제공해야 합니다. 메서드가 오류를 감지하면 dwResultGDI_ERROR 반환해야 합니다.
  • 사용자 인터페이스 플러그 인이 pOutput가리키는 버퍼에서 받은 기능 정보를 수정하려면 해당 IPrintOemUI::DeviceCapabilities 메서드가 버퍼 내용을 수정하고 dwResult적절한 반환 값을 반환해야 합니다. 예를 들어 wCapability DC_FIELDS 경우 메서드는 dwOld설정된 비트로 설정해야 하는 비트 또는 비트여야 하며 dwResultOR 작업의 결과를 반환해야 합니다.
  • 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 구조의 설정(pPublicDMpOEMDM 매개 변수로 가리킨)이 GPD 또는 PPD 파일에 지정된 것과 다른 디바이스 기능 데이터를 보고해야 한다는 것을 사용자 인터페이스 플러그 인에 나타낼 때 이 값을 반환해야 할 수 있습니다. 예를 들어 사진 인쇄를 지정하는 DEVMODEW 구조체에는 GPD 또는 PPD 파일에 지정된 것과 다른 용지 종류 집합이 필요할 수 있습니다. 이러한 상황에서는 pOutputdwOld 매개 변수의 값에 관계없이 플러그 인은 S_DEVCAP_OUTPUT_FULL_REPLACEMENT 반환해야 하며 dwResult 매개 변수를 보고하려는 용지 형식 수로 설정해야 합니다. pOutput NULL 않으면 플러그 인은 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