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

系统会在将 DEVMODEW 转换为打印票证时,将专用 DEVMODEW 结构的二进制大型对象 [BLOB]) 二进制 (编码放入打印票证。

OEMPT_NOSNAPSHOT

在 DEVMODEW (转换为打印票证时,系统不会将专用 DEVMODEW 结构的 BLOB) 二进制编码放入打印票证中。 如果打印票证中完全表示了所有公共和专用 DEVMODEW 成员,请使用此值。

正在调用的 OEM 对象应设置此参数指向的值。

[out] cNamespaces

指向变量的指针,该变量接收插件中使用的专用命名空间 URI 数。 此数字表示 *ppNamespaces 指向的数组中的字符串计数。

[out] ppNamespaces

指向变量的指针,该变量接收 BSTR 数组第一个元素的地址。 该插件使用命名空间 URI 填充每个数组位置。 有关此参数的详细信息,请参阅以下“备注”部分。

返回值

IPrintOemPrintTicketProvider::BindPrinter 应返回以下值之一。

返回代码 说明
S_OK 操作成功。
E_VERSION_NOT_SUPPORTED 该插件不支持 版本参数中指定的 打印架构版本。

注解

插件负责为 ppNamespaces 参数指向的数组和命名空间 URI 字符串分配内存。 应使用 CoTaskMemAlloc 函数分配数组;命名空间字符串应使用 SysAllocString 函数进行分配。 Microsoft Windows SDK文档中介绍了这两个函数。 ppNamespaces 参数指向的数组不需要包含打印架构关键字或打印架构框架的命名空间。

绑定到设备使提供程序能够缓存某些对象,并处理将来在该设备上打印票证或打印功能服务所需的对象。 例如,可以缓存 hPrinter 中的打印机句柄。 IPrintOemPrintTicketProvider::BindPrinter 保证只调用一次。

IPrintOemPrintTicketProvider 对象不必能够多次绑定。 打印票证管理器始终使用不同的 IPrintOemPrintTicketProvider 对象实例来绑定到不同的设备。 当 IPrintOemPrintTicketProvider 对象的引用计数为零时,应释放在成功调用 IPrintOemPrintTicketProvider::BindPrinter 时获取的所有资源。 (请注意,提供程序不应关闭传递到 BindPrinter 调用的句柄) 。 如果支持多个版本,打印票证管理器可能会为同一设备在不同版本中创建多个提供程序。

要求

要求
目标平台 桌面
标头 prcomoem.h (包括 Prcomoem.h)

另请参阅

IPrintOemPrintTicketProvider

IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintOemPrintTicketProvider::GetSupportedVersions