锁定和解锁供并行设备使用的并行端口

若要在并行设备上执行不间断的操作序列,客户端必须分配并行端口,并选择端口上的 IEEE 1284.3 设备。 一系列操作可能包括完成 I/O 请求和执行并行端口总线驱动程序提供的回调例程。 完成一系列操作后,客户端必须取消选择 IEEE 1284.3 设备,然后释放父并行端口。

系统提供的用于并行端口的总线驱动程序支持以下用于锁定和解锁并行端口的内部设备控制请求:

IOCTL_INTERNAL_LOCK_PORT

IOCTL_INTERNAL_LOCK_PORT_NO_SELECT

IOCTL_INTERNAL_UNLOCK_PORT

IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT

Microsoft 建议客户端使用锁定端口并解锁端口请求(如果设备仅可使用这些请求提供的功能操作)。 否则,客户端可以使用锁定端口 no select 和 lock port no 取消选择请求。 这为客户端操作使用不符合 IEEE 1284.3 菊花链规范的选择和取消选择机制的设备提供了额外的灵活性。 客户端可以使用锁端口(无选择请求)来分配端口,然后使用 并行设备的设备控制请求并行设备回调例程来操作设备。

客户端可以将单个 I/O 请求发送到并行设备,而无需锁定和解锁并行端口,因为并行端口总线驱动程序管理客户端之间的端口共享。 并行端口总线驱动程序在处理 I/O 请求之前立即自动分配并行端口,如果有客户端在等待该端口,则会在完成 I/O 请求后立即释放端口。

如果并行端口总线驱动程序可以在设定的超时期限内将端口分配给并行设备,则设备的工作线程将完成请求。 否则,并行端口总线驱动程序完成挂起的请求,状态为STATUS_DEVICE_BUSY。