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