функция обратного вызова 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 | Указывает, что вызывающий объект имеет выделенный порт и для сохранения выделенного порта. |
Возвращаемое значение
Код возврата | Описание |
---|---|
|
Устройство было выбрано. |
|
Недопустимый идентификатор устройства. |
|
Вызывающий объект не указал PAR_HAVE_PORT_KEEP_PORT, и параллельный порт уже выделен. |
|
Вызывающий объект выделил параллельный порт, но системный драйвер функции для параллельных портов не смог выбрать указанное параллельное устройство. |
Комментарии
Чтобы получить указатель на системный 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 не ставит в очередь запрос на выборку, и подпрограмма возвращается немедленно, если порт не может быть выделен.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | parallel.h (включая Parallel.h) |
IRQL | <=DISPATCH_LEVEL |
См. также раздел
IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO