IPrintTicketProvider2::BindPrinter 메서드(prdrvcom.h)

IPrintTicketProvider2::BindPrinter 메서드는 프린터 또는 인쇄 큐를 특정 버전의 인쇄 티켓 스키마에 바인딩하여 핵심 드라이버가 프라이빗 네임스페이스 URI(Uniform Resource Identifier) 집합을 디바이스와 연결할 수 있도록 합니다.

구문

HRESULT BindPrinter(
  [in]  IN HANDLE     hPrinter,
  [in]  IN INT        version,
  [out] OUT PSHIMOPTS pOptions,
  [out] OUT DWORD     *pDevModeFlags,
  [out] OUT INT       *cNamespaces,
  [out] OUT BSTR      **ppNamespaces
);

매개 변수

[in] hPrinter

핵심 드라이버에서 제공하는 스풀러의 인쇄 핸들입니다. 공급자의 클라이언트가 이 핸들의 수명을 관리해야 하므로 공급자는 언제든지 이 핸들을 닫지 않아야 합니다. 공급자는 인쇄 핸들을 캐시할 수 있습니다. 이후의 모든 호출은 이 핸들과 연결된 프린터를 기준으로 합니다.

[in] version

인쇄 티켓 관리자가 OEM 플러그 인 공급자에게 지원을 요청하는 인쇄 티켓 또는 인쇄 티켓 스키마의 주 버전 번호입니다. Windows Vista는 버전 1만 지원합니다. 공급자는 지원하거나 인식하지 못하는 버전에 바인딩하려고 시도하지 않아야 합니다.

[out] pOptions

다음 열거형 값 중 하나를 수신하는 변수에 대한 포인터입니다.

  • PTSHIM_DEFAULT

    시스템은 DEVMODEW를 인쇄 티켓으로 변환하여 DEVMODEW 구조의 프라이빗 부분의 이진 인코딩(BLOB - 이진 대형 개체)을 인쇄 티켓에 배치합니다.

  • PTSHIM_NOSNAPSHOT

    시스템은 DEVMODEW를 인쇄 티켓으로 변환하는 데 DEVMODEW 구조의 프라이빗 부분의 이진 인코딩(BLOB)을 인쇄 티켓에 배치하지 않습니다. 모든 공용 및 프라이빗 DEVMODEW 멤버가 인쇄 티켓에 완전히 표시되는 경우 이 값을 사용합니다.

[out] pDevModeFlags

DEVMODEW-to-Print 티켓 또는 인쇄 티켓-DEVMODEW 변환의 인쇄 티켓 shim에서 처리해서는 안 되는 공용 DEVMODEW 멤버를 나타내는 비트 플래그 집합을 수신하는 DWORD 형식 변수에 대한 포인터입니다. 이 매개 변수에 있는 비트 플래그는 프린터가 연결된 DEVMODEW 멤버를 지원하지 않거나 공급자가 DEVMODEW 특성을 처리한다는 것을 나타냅니다. 예를 들어 *pDevModeFlags에서 DM_MEDIATYPE 설정된 경우 프린터는 여러 미디어 형식을 지원하지 않거나 공급자가 여러 미디어 형식을 지원할 책임이 있습니다. (모든 DM_XXX 비트 플래그는 wingdi.h에 정의되고 Microsoft Windows SDK 설명되어 있습니다. 기본적으로 인쇄 티켓 shim은 기본 DEVMODEW 구조체의 dmFlags 멤버에 표시되는 모든 멤버를 처리합니다.

[out] cNamespaces

플러그 인에 사용되는 프라이빗 네임스페이스 URI 수를 수신하는 변수에 대한 포인터입니다. 이 숫자는 ppNamespaces가 가리키는 배열의 문자열 수를 나타냅니다.

[out] ppNamespaces

BSTR 배열의 첫 번째 요소의 주소를 받는 변수에 대한 포인터입니다. 플러그 인은 각 배열 위치를 네임스페이스 URI로 채웁니다. 이 매개 변수에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.

반환 값

IPrintTicketProvider2::BindPrinter 는 다음 값 중 하나를 반환해야 합니다.

반환 코드 Description
S_OK 작업에 성공했습니다.
E_VERSION_NOT_SUPPORTED 플러그 인은 버전 매개 변수에 지정된 인쇄 스키마 의 버전을 지원하지 않습니다.

설명

디바이스에 바인딩하면 공급자가 특정 개체를 캐시하고 해당 디바이스의 향후 인쇄 티켓 또는 디바이스 기능 서비스에 필요한 핸들을 캐시할 수 있습니다. 예를 들어 hPrinter 매개 변수의 프린터 핸들을 캐시할 수 있습니다. IPrintTicketProvider2::BindPrinter 메서드는 한 번만 호출되도록 보장됩니다.

드라이버는 ppNamespaces 매개 변수가 가리키는 배열과 네임스페이스 URI 문자열에 대한 메모리를 할당합니다. 배열은 CoTaskMemAlloc 함수를 사용하여 할당해야 합니다. 네임스페이스 문자열은 SysAllocString 함수를 사용하여 할당해야 합니다. 두 함수 모두 Windows SDK 설명서에 설명되어 있습니다. ppNamespaces 매개 변수가 가리키는 배열은 인쇄 스키마 키워드 또는 인쇄 스키마 프레임워크의 네임스페이스를 포함할 필요가 없습니다.

IPrintTicketProvider2 개체는 두 번 이상 바인딩할 수 없습니다. 인쇄 티켓 관리자는 항상 다른 디바이스에 바인딩하기 위해 서로 다른 IPrintTicketProvider2 개체 인스턴스를 사용합니다. IPrintTicketProvider2::BindPrinter에 대한 성공적인 호출에서 획득한 모든 리소스는 IPrintTicketProvider2 개체의 참조 수가 0일 때 해제되어야 합니다. 공급자는 BindPrinter 호출에 전달된 핸들을 닫아서는 안 됩니다. 여러 버전이 지원되는 경우 인쇄 티켓 관리자는 동일한 디바이스에 대해 여러 공급자를 다른 버전으로 만들 수 있습니다.

요구 사항

요구 사항
헤더 prdrvcom.h(Prdrvcom.h 포함)

추가 정보

IPrintTicketProvider2

IPrintTicketProvider2::ConvertDevModeToPrintTicket

IPrintTicketProvider2::ConvertPrintTicketToDevMode

IPrintTicketProvider2::GetSupportedVersions