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

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

Синтаксис

BOOLEAN KeInsertByKeyDeviceQueue(
  [in, out] PKDEVICE_QUEUE       DeviceQueue,
  [in, out] PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
  [in]      ULONG                SortKey
);

Параметры

[in, out] DeviceQueue

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

[in, out] DeviceQueueEntry

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

[in] SortKey

Задает значение ключа сортировки, определяющее положение в очереди устройств, в которую нужно вставить запись.

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

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

Комментарии

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

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

Если KeInsertByKeyDeviceQueue возвращает значение 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

KeInsertDeviceQueue

KeRemoveDeviceQueue

KeRemoveEntryDeviceQueue