Bloqueo y desbloqueo de un puerto paralelo para su uso por un dispositivo paralelo
Para ejecutar una secuencia ininterrumpida de operaciones en un dispositivo paralelo, un cliente debe asignar el puerto paralelo y seleccionar el dispositivo IEEE 1284.3 en el puerto. Una secuencia de operaciones puede incluir completar solicitudes de E/S y ejecutar las rutinas de devolución de llamada proporcionadas por el controlador de bus de puerto paralelo. Después de completar una secuencia de operaciones, un cliente debe anular la selección del dispositivo IEEE 1284.3 y, a continuación, liberar el puerto paralelo primario.
El controlador de bus proporcionado por el sistema para puertos paralelos admite las siguientes solicitudes de control de dispositivos internos para bloquear y desbloquear un puerto paralelo:
IOCTL_INTERNAL_LOCK_PORT_NO_SELECT
IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT
Microsoft recomienda que los clientes usen el puerto de bloqueo y desbloqueen las solicitudes de puerto si los dispositivos solo pueden usar la funcionalidad que proporcionan estas solicitudes. De lo contrario, los clientes pueden usar el puerto de bloqueo sin seleccionar y bloquear el puerto sin anular la selección de solicitudes. Esto proporciona una flexibilidad adicional de cliente para operar un dispositivo que usa un mecanismo de selección y deselección que no se ajusta a las especificaciones de la cadena de margarita IEEE 1284.3. Un cliente puede usar el puerto de bloqueo sin solicitud de selección para asignar el puerto y, a continuación, operar el dispositivo mediante solicitudes de control de dispositivos en paralelo para dispositivos paralelos y rutinas de devolución de llamada de dispositivo en paralelo.
Los clientes pueden enviar solicitudes de E/S individuales a dispositivos paralelos sin necesidad de bloquear y desbloquear un puerto paralelo porque el controlador de bus de puerto paralelo administra el uso compartido de puertos entre los clientes. El controlador de bus de puerto paralelo asigna automáticamente el puerto paralelo inmediatamente antes de procesar una solicitud de E/S y, si hay clientes que esperan el puerto, libera el puerto inmediatamente después de completar la solicitud de E/S.
Si el controlador de bus de puerto paralelo puede asignar el puerto al dispositivo paralelo dentro de un período de tiempo de espera establecido, el subproceso de trabajo del dispositivo completa la solicitud. De lo contrario, el controlador del bus de puerto paralelo completa la solicitud pendiente con un estado de STATUS_DEVICE_BUSY.