连接到 LPT 端口的打印机
LPT 枚举器是 总线驱动程序的一个示例。 LPT 枚举器能够从符合 IEEE 1284 扩展功能端口协议和 ISA 接口标准的 LPT 端口硬件获取标识信息。
Windows 2000 或更高版本系统启动时,配置管理器会调用 LPT 枚举器来枚举连接到 LPT 端口的 IEEE 1284 兼容设备。 对于找到的每个设备,配置管理器将调用打印机类安装程序。 打印机类安装程序调用 SetupDi 前缀 设备安装函数,从 打印机 INF 文件获取信息。
对于并行连接的打印机,并行枚举器使用从打印机接收的 1284 字符串生成的唯一硬件 ID 创建开发节点。
示例 1284 字符串为:
"MANUFACTURER:Hewlett-Packard;COMMAND SET:PJL,MLC,PCL,POSTSCRIPT;MODEL:HP Color LaserJet 550;CLASS:PRINTER;COMMENT:HP LaserJet;"
从此 1284 字符串中,并行枚举器生成以下硬件 ID:
LPTENUM\Hewlett-PackardHP_Co3115
硬件 ID 由枚举器前缀组成,后跟制造商名称、型号名称和循环冗余检查 (CRC) 代码。 CRC 代码(硬件 ID 的最后四位数字)是从制造商和型号字符串生成的。 字符串中的空格将替换为下划线。
若要从设备读取 1284 ID 字符串,请发送 IOCTL_PAR_QUERY_DEVICE_ID。 请注意,后台处理程序将 LPTx 符号链接重定向 (其中 x 是 LPT 数字 1、2 或 3) 到后台处理程序的命名管道,这意味着如果后台处理程序正在运行,则 parport 永远不会看到发送到 LPTx 的 IOCTL。
并行连接的即插即用打印机的开发节点放置在 HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM 下,并且具有以下形式的单个硬件 ID:
LPTENUM\Company_NameModelNam1234
驱动程序堆栈显示在下一个代码示例后面的图中。
以下示例显示了正确“即插即用”LPTENUM\Company_NameModelNam1234 形式的硬件 ID 的 INF 代码。 请注意,“型号名称 XYZ”设备说明在 INF 制造商部分中出现两次。 第一行中的硬件 ID 包括总线枚举器,而第二行中的硬件 ID 不包含。 无论安装了打印机的总线类型如何,这两行都保证排名 0 的硬件 ID 匹配。 有关详细信息,请参阅安装自定义即插即用打印机驱动程序。
[Manufacturer]
%Company_Name%=Company_Name
; Section name for all drivers for Company_Name
[Company_Name]
"Model Name XYZ" = Install_Section_XYZ, LPTENUM\Company_NameModelNam1234 ; plus any compatible IDs
"Model Name XYZ" = Install_Section_XYZ, Company_NameModelNam1234 ; plus any compatible IDs
; The install section for the XYZ model
[Install_Section_XYZ]
[Strings]
Company_Name="Company Name"
对于与其他型号共享 其设备 ID 的打印机,INF 文件应如下所示:
[Manufacturer]
%Company_Name%=Company_Name
; The section for all drivers for Company_Name
[Company_Name]
"Model Name XYA" = Install_Section_XYA, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYA" = Install_Section_XYA, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
; The install sections
[Install_Section_XYA]
[Install_Section_XYB]
[ControlFlags]
InteractiveInstall = LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234
[Strings]
Company_Name = "Company Name"
与前面的示例一样, INF Manufacturer 部分中 的每个模型都由一对几乎相同的线条表示。 对于给定模型,对中的一行包括总线枚举器;另一个没有。 无论安装了打印机的总线类型如何,这两行都保证排名 0 的硬件 ID 匹配。 有关详细信息,请参阅安装自定义即插即用打印机驱动程序。