Метод IPrintOemPrintTicketProvider::BindPrinter (prcomoem.h)
Метод IPrintOemPrintTicketProvider::BindPrinter позволяет основному драйверу связать набор универсальных идентификаторов ресурсов частного пространства имен (URI) с устройством. Этот метод также позволяет подключаемым модулям кэшировать сведения (например, дескриптор принтера), которые можно будет использовать позже.
Синтаксис
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
Система помещает двоичную кодировку (большой двоичный объект [BLOB]) частной структуры DEVMODEW в билет печати при преобразовании DEVMODEW в билет печати.
OEMPT_NOSNAPSHOT
Система не будет помещать двоичную кодировку (BLOB) частной структуры DEVMODEW в билет печати при преобразовании DEVMODEW в билет печати. Используйте это значение, если все открытые и частные члены DEVMODEW полностью представлены в билете печати.
Вызываемый объект OEM должен задать значение, указанное этим параметром.
[out] cNamespaces
Указатель на переменную, получающую количество URI частного пространства имен, используемых в подключаемом модуле. Это число представляет количество строк в массиве, на который указывает *ppNamespaces.
[out] ppNamespaces
Указатель на переменную, получающую адрес первого элемента массива BSTR. Подключаемый модуль заполняет каждую позицию массива универсальным кодом ресурса (URI) пространства имен. Дополнительные сведения об этом параметре см. в следующем разделе Примечаний.
Возвращаемое значение
IPrintOemPrintTicketProvider::BindPrinter должен возвращать одно из следующих значений.
Код возврата | Описание |
---|---|
S_OK | Операция успешно выполнена. |
E_VERSION_NOT_SUPPORTED | Подключаемый модуль не поддерживает версию схемы печати, указанную в параметре version . |
Комментарии
Подключаемый модуль отвечает за выделение памяти для массива, на который указывает параметр ppNamespaces , и для строк URI пространства имен. Массив должен быть выделен с помощью функции CoTaskMemAlloc ; строки пространства имен должны выделяться с помощью функции SysAllocString . Обе эти функции описаны в документации по Microsoft Windows SDK. Массив, на который указывает параметр ppNamespaces , не обязательно должен содержать пространства имен для ключевых слов схемы печати или платформы схемы печати.
Привязка к устройству позволяет поставщику кэшировать определенные объекты и обрабатывать, которые потребуются ему для будущих служб билетов или возможностей печати на этом устройстве. Например, дескриптор принтера в hPrinter можно кэшировать. IPrintOemPrintTicketProvider::BindPrinter гарантированно вызывается только один раз.
Объект IPrintOemPrintTicketProvider не обязательно должен иметь возможность привязки более одного раза. Диспетчер билетов печати всегда использует разные экземпляры объектов IPrintOemPrintTicketProvider для привязки к разным устройствам. Все ресурсы, полученные в результате успешного вызова IPrintOemPrintTicketProvider::BindPrinter , должны быть освобождены, если количество ссылок объекта IPrintOemPrintTicketProvider равно нулю. (Обратите внимание, что поставщик не должен закрывать дескриптор, переданный в вызов BindPrinter. Диспетчер билетов печати может создать несколько поставщиков для одного устройства в разных версиях, если поддерживается несколько версий.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | prcomoem.h (включая Prcomoem.h) |
См. также раздел
IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket