IPrintOemPrintTicketProvider::BindPrinter 메서드(prcomoem.h)

IPrintOemPrintTicketProvider::BindPrinter 메서드를 사용하면 핵심 드라이버가 프라이빗 네임스페이스 URI(Uniform Resource Identifier) 집합을 디바이스와 연결할 수 있습니다. 또한 이 메서드를 사용하면 플러그 인이 나중에 사용할 수 있는 정보(예: 프린터 핸들)를 캐시할 수 있습니다.

구문

HRESULT BindPrinter(
  [in]  HANDLE     hPrinter,
  [in]  INT        version,
  [out] POEMPTOPTS pOptions,
  [out] INT        *cNamespaces,
  [out] BSTR       **ppNamespaces
);

매개 변수

[in] hPrinter

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

[in] version

인쇄 스키마의 주 버전 번호입니다. Windows Vista는 버전 1만 지원합니다.

[out] pOptions

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

OEMPT_DEFAULT

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

OEMPT_NOSNAPSHOT

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

호출되는 OEM 개체는 이 매개 변수가 가리키는 값을 설정해야 합니다.

[out] cNamespaces

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

[out] ppNamespaces

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

반환 값

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

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

설명

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

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

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

요구 사항

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

추가 정보

IPrintOemPrintTicketProvider

IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintOemPrintTicketProvider::GetSupportedVersions