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


Функция 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 (include 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