다음을 통해 공유


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

IPrintTicketProvider::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로 채웁니다. 이 매개 변수에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.

반환 값

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

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

설명

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

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

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

요구 사항

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

추가 정보

IPrintTicketProvider

IPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintTicketProvider::GetSupportedVersions