Поделиться через


функция обратного вызова PPARALLEL_TRY_SELECT_ROUTINE (parallel.h)

Подпрограмма обратного вызова PPARALLEL_TRY_SELECT_ROUTINE выбирает сетевое устройство IEEE 1284.3 или устройство ieee 1284 end-of-chain, подключенное к параллельному порту. Эта подпрограмма предоставляется системным драйвером-функцией для параллельных портов.

Синтаксис

PPARALLEL_TRY_SELECT_ROUTINE PparallelTrySelectRoutine;

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

Параметры

[in] TrySelectContext

Указатель на расширение устройства объекта функционального устройства (FDO) параллельного порта.

[in] TrySelectCommand

Указатель на структуру PARALLEL_1284_COMMAND . Вызывающий объект задает следующие элементы:

ID

Указывает идентификатор устройства 1284.3.

CommandFlags

Задает побитовое ЗНАЧЕНИЕ ИЛИ, равное нулю или нескольким из следующих флагов:

Значение Описание
PAR_END_OF_CHAIN_DEVICE Указывает устройство конца цепочки.
PAR_HAVE_PORT_KEEP_PORT Указывает, что вызывающий объект имеет выделенный порт и для сохранения выделенного порта.

Возвращаемое значение

Код возврата Описание
STATUS_SUCCESS
Устройство было выбрано.
STATUS_INVALID_PARAMETER
Недопустимый идентификатор устройства.
STATUS_PENDING
Вызывающий объект не указал PAR_HAVE_PORT_KEEP_PORT, и параллельный порт уже выделен.
STATUS_UNSUCCESSFUL
Вызывающий объект выделил параллельный порт, но системный драйвер функции для параллельных портов не смог выбрать указанное параллельное устройство.

Комментарии

Чтобы получить указатель на системный PPARALLEL_TRY_SELECT_ROUTINE обратный вызов, драйвер в режиме ядра использует запрос IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO , который возвращает структуру PARALLEL_PNP_INFORMATION . Элемент TrySelectDevice структуры PARALLEL_PNP_INFORMATION является указателем на этот обратный вызов.

Драйвер режима ядра может использовать запрос IOCTL_INTERNAL_SELECT_DEVICE или обратный вызов PPARALLEL_TRY_SELECT_ROUTINE для выбора параллельного устройства на параллельном порту. Драйвер функции параллельного порта помещает в очередь запрос на выбор, если параллельный порт уже выделен. Однако обратный вызов PPARALLEL_TRY_SELECT_ROUTINE не ставит в очередь запрос на выборку, и подпрограмма возвращается немедленно, если порт не может быть выделен.

Примечание Если клиент использует только обратный вызов PPARALLEL_TRY_SELECT_ROUTINE для выбора параллельного устройства, а другие клиенты борются за параллельный порт, предоставляемый системой драйвер функции для параллельных портов может никогда не выделить этот порт клиенту. Чтобы обеспечить успешное выполнение, клиент должен использовать запрос IOCTL_INTERNAL_SELECT_DEVICE . (Драйвер функции параллельного порта помещает в очередь, а затем обрабатывает запросы на выделение портов и запросы выбора устройств в порядке, в котором принимаются запросы на выбор устройств.)
 
Дополнительные сведения см. в статье Выбор и отмена выбора устройства IEEE 1284, подключенного к ParallelPort.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть 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