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 다음 값 중 하나를 반환해야 합니다.
반환 코드 | 묘사 |
---|---|
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