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

IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintOemPrintTicketProvider::GetSupportedVersions