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::ConvertDevModeToPrintTicket