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


Функция KeInsertDeviceQueue (wdm.h)

Подпрограмма KeInsertDeviceQueue получает спин-блокировку для указанного объекта очереди устройств и, если очередь устройства находится в состоянии занятости, помещает указанную запись в очередь.

Синтаксис

BOOLEAN KeInsertDeviceQueue(
  [in, out] PKDEVICE_QUEUE       DeviceQueue,
  [in, out] PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
);

Параметры

[in, out] DeviceQueue

Указатель на управляющий объект типа device queue, для которого вызывающий объект предоставляет хранилище.

[in, out] DeviceQueueEntry

Указатель на запись очереди устройства, которую необходимо вставить.

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

Если очередь устройств пуста, возвращается значение FALSE , а deviceQueueEntry не вставляется в очередь устройств.

Комментарии

Если очередь устройств находится в состоянии занятости, указанная строка DeviceQueueEntry вставляется в конце очереди устройств и освобождается блокировка спина очереди устройства.

Если KeInsertDeviceQueue возвращает значение FALSE, запись не была поставлена в очередь и вызывающий объект должен начать обработку IRP. Вызов KeInsertDeviceQueue или KeInsertByKeyDeviceQueue , когда очередь пуста, приводит к переходу очереди устройства с состояния "Не занято" на занято.

Эта подпрограмма используется для кода, который помещает в очередь запрос ввода-вывода к драйверу устройства.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), MarkingQueuedIrps(wdm)

См. также раздел

KeInitializeDeviceQueue

KeInsertByKeyDeviceQueue

KeRemoveDeviceQueue

KeRemoveEntryDeviceQueue