选择和取消选择连接到并行端口的 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 链端设备。

选择请求要求客户端处理最少,因为如果并行端口由另一个客户端分配,则系统为并行端口提供的函数驱动程序将客户端的 select 请求排队。 并行端口函数驱动程序取消选择请求的队列后,它会尝试分配端口并选择 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 支持每个端口最多两个花链设备。