Метод 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
Дескриптор печати spooler, который поставляется 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 | Подключаемый модуль не поддерживает версию схемы печати, указанную в параметре версии. |
Замечания
Подключаемый модуль отвечает за выделение памяти для массива, на который указывает параметр ppNamespaces и строк URI пространства имен. Массив должен быть выделен с помощью функции CoTaskMemAlloc; Строки пространства имен следует выделить с помощью функции SysAllocString. Обе эти функции описаны в документации по пакету SDK для Microsoft Windows. Массив, на который указывает ppNamespaces параметр, не требуется содержать пространства имен для ключевых слов схемы печати или платформы схемы печати.
Привязка к устройству позволяет поставщику кэшировать определенные объекты и обрабатывать их, необходимые для будущих служб печати или печати на этом устройстве. Например, дескриптор принтера в hPrinter можно кэшировать. IPrintOemPrintTicketProvider::BindPrinter гарантированно вызываться только один раз.
Объект IPrintOemPrintTicketProvider не должен быть в состоянии привязать несколько раз. Диспетчер билетов печати всегда использует разные экземпляры объектов IPrintOemPrintTicketProvider для привязки к разным устройствам. Все ресурсы, приобретенные в успешном вызове IPrintOemPrintTicketProvider::BindPrinter, должны быть освобождены, если количество ссылок объекта IPrintOemPrintTicketProvid er равно нулю. (Обратите внимание, что поставщик не должен закрывать дескриптор, переданный в вызов BindPrinter). Диспетчер билетов печати может создать несколько поставщиков для одного устройства в разных версиях, если поддерживаются несколько версий.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | prcomoem.h (include Prcomoem.h) |
См. также
IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket