自定义打印机端口监视器
可以通过自定义 Windows Vista 提供的适用于设备的标准 TCP/IP 或 Web 服务 (WSD) 端口监视器,为具有高于和超出标准 bidi 通信架构 的功能的打印设备定义新架构。 必须创建 bidi 扩展文件,这是一个 XML 文件,用于定义特定于该驱动程序的新架构。 安装驱动程序时会安装此扩展文件。 当 TCP/IP 或 WSD 端口监视器标识此扩展文件时,监视器会加载该文件,然后可以使用其他 bidi 架构。
bidi 扩展文件中的架构是标准打印架构的子集。 此类架构必须遵循随 WDK 一起提供的 Tcpbidi.xsd 或 WsdBidi.xsd 文件的结构。
注意 如果 bidi 通信架构 符合要求,则无需创建 bidi 扩展文件,因此无需自定义打印端口监视器。
如果以下任一条件适用,应创建 bidi 扩展文件并将其与打印机驱动程序相关联:
打印机驱动程序需要打印机中无法在标准打印架构中找到的信息。 若要获取此信息,必须使用其他查询扩展支持的架构。 枚举特定端口支持的架构的任何其他客户端都会获得其他查询,但通常无法理解它们。
你计划包括来自标准打印架构的查询,这些查询在标准 TCP/IP 或 WSD 端口监视器中不受支持,因为这些查询需要特定于驱动程序的信息。 在这种情况下,必须扩展打印架构。 通常,应扩展与打印媒体输入和输出箱相关的打印架构部分。 还应在 bidi 架构中定义的箱名称与打印机管理信息库 (MIB) 中的箱名之间提供映射。
你打算自定义标准查询的工作方式,例如通过设置自定义对象标识符 (OID) 或更改刷新间隔。 例如,标准 TCP/IP 端口监视器以 600 秒 (10 分钟) 的默认间隔轮询不支持 Web 服务事件的设备。 可以通过创建 bidi 扩展来更改轮询间隔,该扩展在与设备关联的 Value 构造中设置 refreshInterval 属性。 (请参阅
Memory
以下代码示例中的 属性。)
如果驱动程序没有关联的 bidi 扩展文件,则标准打印架构中的 bidi 通信支持无法响应需要特定于驱动程序的数据 (的查询,例如与输入和输出箱相关的数据) 。
注意 Windows Vista 中的网络路由隔离舱允许受信任的进程 (虚拟或物理) 连接到不同的网络接口,同时使各种接口彼此隔离。 例如,Windows Vista 使用这些隔离区来强制实施不允许同时访问 VPN 和用户的本地网络和 Internet 的 VPN 策略。 在打印期间,后台处理程序在打开 TCP 打印机端口时模拟用户。 因此,当用户连接到 VPN 时,后台处理程序无法打印到本地网络打印机。
Bidi 扩展文件的结构
bidi 扩展文件是格式正确的 XML,必须根据 Microsoft Windows 驱动程序工具包提供的 Tcpbidi.xsd 或 WsdBidi.xsd 文件有效, (WDK) 。 这些 .xsd 文件中定义的构造使你能够定义新架构。
下面是显示其基本结构的 TCP/IP bidi 扩展文件的不完整示例。 WSD bidi 扩展文件的结构类似。
<?xml version="1.0" encoding="US-ASCII"?>
<bidi:Schema xmlns:bidi="https://schemas.microsoft.com/windows/2005/03/printing/bidi">
<Schema>
<Property name="Printer">
<Property name="Configuration">
<Property name= "Memory">
<Value name="Size" type="BIDI_INT" oid="1.3.6.1.2.1.25.2.2" refreshInterval="600" drvPrinterEvent="true" />
.
.
.
</Property>
</Property>
</Property>
</Schema>
</bidi:Schema>
在前面的代码示例中,请注意:
Root 元素只包含一个 Schema 元素。 架构的层次结构以 Schema 元素开头。
Schema 元素将 Property 元素作为节点,将 Value 元素作为叶。
每个 Value 元素都定义一种特定技术,以便检索数据。
将 WinSNMP 转换为 Bidi 数据类型
简单网络管理协议 (SNMP) 类型和 bidi 类型之间的对应关系在 BIDI_TYPE 枚举主题中提供。
本部分的其余部分包含以下主题,可帮助你创建自己的 bidi 架构扩展。