PPARALLEL_TRY_SELECT_ROUTINE callback 函数 (parallel.h)

PPARALLEL_TRY_SELECT_ROUTINE类型的回调例程选择连接到并行端口的 IEEE 1284.3 菊花链设备或 IEEE 1284 链尾设备。 系统提供的用于并行端口的函数驱动程序提供此例程。

语法

PPARALLEL_TRY_SELECT_ROUTINE PparallelTrySelectRoutine;

NTSTATUS PparallelTrySelectRoutine(
  [in] PVOID TrySelectContext,
  [in] PVOID TrySelectCommand
)
{...}

参数

[in] TrySelectContext

指向并行端口的功能设备对象的设备扩展的指针 (FDO) 。

[in] TrySelectCommand

指向 PARALLEL_1284_COMMAND 结构的指针。 调用方指定以下成员:

ID

指定 1284.3 设备 ID。

CommandFlags

指定以下标志的零个或多个按位 OR:

说明
PAR_END_OF_CHAIN_DEVICE 指定链末设备。
PAR_HAVE_PORT_KEEP_PORT 指定调用方已分配端口并保留分配的端口。

返回值

返回代码 说明
STATUS_SUCCESS
已选择设备。
STATUS_INVALID_PARAMETER
设备 ID 无效。
STATUS_PENDING
调用方未指定PAR_HAVE_PORT_KEEP_PORT,并且已分配并行端口。
STATUS_UNSUCCESSFUL
调用方已分配并行端口,但系统提供的并行端口函数驱动程序无法选择指定的并行设备。

注解

为了获取指向系统提供的 PPARALLEL_TRY_SELECT_ROUTINE回调的 指针,内核模式驱动程序使用 IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO 请求,该请求返回 PARALLEL_PNP_INFORMATION 结构。 PARALLEL_PNP_INFORMATION 结构的 TrySelectDevice 成员是指向此回调的指针。

内核模式驱动程序可以使用 IOCTL_INTERNAL_SELECT_DEVICE 请求或 PPARALLEL_TRY_SELECT_ROUTINE 回调来选择并行端口上的并行设备。 如果已分配并行端口,并行端口函数驱动程序会将选择请求排队。 但是, PPARALLEL_TRY_SELECT_ROUTINE 回调不会将选择请求排队,如果无法分配端口,例程将立即返回。

注意 如果客户端仅使用 PPARALLEL_TRY_SELECT_ROUTINE 回调来尝试选择并行设备,而其他客户端则争用并行端口,则系统提供的并行端口函数驱动程序可能永远不会将端口分配给客户端。 为了确保成功,客户端必须使用 IOCTL_INTERNAL_SELECT_DEVICE 请求。 (并行端口函数驱动程序队列以及后续处理端口分配请求和设备选择请求,按接收选择设备请求的顺序进行处理。)
 
有关详细信息,请参阅 选择和取消选择附加到 ParallelPort 的 IEEE 1284 设备

要求

要求
目标平台 桌面
标头 parallel.h (包括 Parallel.h)
IRQL <=DISPATCH_LEVEL

另请参阅

PARALLEL_1284_COMMAND

IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO

IOCTL_INTERNAL_SELECT_DEVICE

IOCTL_INTERNAL_DESELECT_DEVICE

PARALLEL_PNP_INFORMATION

PPARALLEL_DESELECT_ROUTINE