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


функция обратного вызова 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. Вызывающий объект задает следующие элементы:

ИДЕНТИФИКАТОР

Указывает идентификатор устройства 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 (include 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