The IOCTL_PAR_IS_PORT_FREE request determines if a parallel device's parent parallel port is free at the time the system-supplied bus driver for parallel ports processes the request. This request is provided primarily for user-mode clients.

This request is processed immediately after the I/O manager calls the parallel port bus driver's dispatch routine for device control requests. Note, however, that the status of the parallel port can change between the time that the parallel port bus driver completes the request and the time that control returns to a user-mode client.

Kernel-mode clients can directly determine if a parallel port is free by calling the system-supplied PPARALLEL_TRY_ALLOCATE_ROUTINE callback.

For more information, see Locking and Unlocking a ParallelPort for Use by a Parallel Device.

Major code


Input buffer


Input buffer length


Output buffer

The AssociatedIrp.SystemBuffer member points to a BOOLEAN buffer that the client allocates to output the status of the parallel port. If the parallel port is free, the system-supplied function driver for parallel ports sets the buffer to TRUE, otherwise it sets the buffer to FALSE.

Output buffer length

The length of a BOOLEAN.

Status block

The Information member is set to the size, in bytes, of a BOOLEAN.

The Status member is set to one of the generic status values returned by device control requests for parallel devices or to the following value:


The Parameters.DeviceIoControl.OutputBufferLength member is less than the size, in bytes, of a BOOLEAN.


Requirement Value
Header ntddpar.h (include Ntddpar.h)

See also