Поделиться через


Метод 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

IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintOemPrintTicketProvider::GetSupportedVersions