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