尽管通常应使用服务对象源代码中的 HardwareId 属性指定即插即用硬件 ID,但有时服务对象供应商可能需要更大的灵活性。 例如,需要更改硬件 ID 而不重新分发整个服务对象程序集。
为了支持这些情况,Microsoft Point of Service for .NET (POS for .NET) 在 XML 文件中指定硬件关联。 这些 XML 文件是从注册表项 HKEY_LOCAL_MACHINE/SOFTWARE/POSfor.NET/ControlConfigs 中指定的目录中读取的。 构造可用服务对象和设备的列表时,PosExplorer 处理该目录中的每个文件,并尽可能关联设备。 服务对象或应用程序不需要执行其他操作。
架构
即插即用配置文件必须以名为 PointOfServiceConfig 的顶级节点开头,并且具有属性 Version 以指示文件的 XML 版本。
之后,可能有任意数量的 ServiceObject 子节点。 每个服务对象节点必须包含 Type 和 Name 属性,以指示 POS 设备类型和服务对象的名称。 这两个字段将与可用的服务对象进行匹配,以确定哪些(如果有)应与子节点 HardwareId 中指定的设备相关联。 ServiceObject 节点上还有一个可选属性,即 Override。 如果设置了此属性,则 XML 文件中的设备关联将替代程序集中包含的关联。
ServiceObject 节点包含名为 HardwareId 的子节点,这些子节点具有 From 和 To 属性。 这些属性的内容与在服务对象程序集的 HardwareId 属性中找到的内容相同,并指定要与服务对象关联的硬件 ID 范围。
示例
该示例演示典型的 XML 即插即用配置文件。
<PointOfServiceConfig Version="1.0">
<ServiceObject Type="Msr" Name="ExampleMsr" Override="yes">
<HardwareId From="HID\Vid_0801&Pid_0002&Rev_0100"
To="HID\Vid_0801&Pid_0002&Rev_9999" />
</ServiceObject>
</PointOfServiceConfig>
硬件 ID 优先级
如果设置了 ServiceObject 节点上的 Override 属性,则 XML 中指定的设备关联优先,服务对象上的任何 HardwareId 属性都将放弃。
如果未设置 Override 属性,则 XML 和 HardwareId 都没有优先级。 相反,PosExplorer 会将所有指定设备的联合与服务对象相关联。