选择和取消选择连接到并行端口的 IEEE 1284 设备

客户端可以使用以下内部设备控制请求来选择和取消选择附加到并行端口的 IEEE 1284.3 设备:

IOCTL_INTERNAL_SELECT_DEVICE

IOCTL_INTERNAL_DESELECT_DEVICE

内核模式驱动程序还可以使用系统提供的 并行设备回调例程,这些例程 是通过 IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO 请求获取的。 此请求返回一个 PARALLEL_PNP_INFORMATION 结构,该结构包含以下指向系统提供的回调的指针:

  • TrySelectDevice 成员是指向PPARALLEL_TRY_SELECT_ROUTINE回调的指针,该回调取消选择连接到并行端口的 IEEE 1284.3 菊花链设备或 IEEE 1284 链末设备。

  • DeselectDevice 成员是指向PPARALLEL_DESELECT_ROUTINE回调的指针,该回调选择连接到并行端口的 IEEE 1284.3 菊花链设备或 IEEE 1284 链末设备。

选择请求要求客户端处理最少,因为系统提供的并行端口函数驱动程序在并行端口由另一个客户端分配时,会将客户端的选择请求排队。 并行端口函数驱动程序取消选择请求排队后,它会尝试分配端口并选择 IEEE 1284.3 设备。 由于可接受的超时延迟或某些其他特定于设备的条件,客户端可以随时取消选择请求。

注意 如果客户端仅使用 PPARALLEL_TRY_SELECT_ROUTINE 回调来尝试选择并行设备,而其他客户端则争用并行端口,则系统提供的并行端口函数驱动程序可能永远不会将端口分配给客户端。 为了确保成功,客户端必须使用 IOCTL_INTERNAL_SELECT_DEVICE 请求。 (并行端口函数驱动程序队列,并随后按照接收选择设备请求的顺序处理端口分配请求和设备选择请求。)

并行端口功能驱动程序为客户端选择 IEEE 1284.3 设备后,客户端对该端口和所选 IEEE 1284.3 设备具有独占访问权限。 客户端必须调用 PPARALLEL_DESELECT_ROUTINE 回调来释放端口并取消选择 IEEE 1284.3 设备。 客户端释放端口后,并行端口函数驱动程序将取消挂起的请求(如果有)排队,并处理请求。

Microsoft Windows 2000 支持每个端口四个菊花链设备;但是,Microsoft 建议每个端口最多使用两个菊花链设备。 Windows XP 每个端口最多支持两个菊花链设备。