PPARALLEL_TRY_SELECT_ROUTINE回调函数 (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 | 指定调用方分配了端口,并保留分配的端口。 |
返回值
返回代码 | 描述 |
---|---|
|
已选择设备。 |
|
设备 ID 无效。 |
|
调用方未指定PAR_HAVE_PORT_KEEP_PORT,并且已分配并行端口。 |
|
调用方已分配并行端口,但系统提供的并行端口函数驱动程序无法选择指定的并行设备。 |
言论
若要获取指向系统提供的 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 请求。 (并行端口函数驱动程序队列,随后处理端口分配请求和设备选择请求的顺序,以接收选择设备请求的顺序。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | parallel.h (include Parallel.h) |
IRQL | <=DISPATCH_LEVEL |
另请参阅
IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO