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