Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подпрограмма KeInsertQueue вставляет запись в хвост заданной очереди, если она не может немедленно использовать запись для удовлетворения ожидания потока.
Синтаксис
LONG KeInsertQueue(
[in, out] PRKQUEUE Queue,
[in, out] PLIST_ENTRY Entry
);
Параметры
[in, out] Queue
Указатель на объект инициализированной очереди, для которого вызывающий объект предоставляет резидентное хранилище в непагованном пуле.
[in, out] Entry
Указатель на запись, в очередь. Этот указатель должен быть адресом резидентного пространства системы.
Возвращаемое значение
KeInsertQueue возвращает предыдущее состояние сигнала заданной очереди . Если значение равно нулю (то есть не сигналируется) до вызова KeInsertQueue, KeInsertQueue возвращает ноль, что означает, что записи не были в очереди. Если это ненулевое значение (сигнал), KeInsertQueue возвращает количество записей, которые были помещены в очередь до вызова KeInsertQueue.
Замечания
Записи, которые должны быть помещены в очередь KeInsertQueue должны быть выделены из непагированного пула. Например, память для записей, определенных вызывающим, можно выделить с помощью ExAllocatePoolWithTag. Если вызывающий объект выделяет записи фиксированного размера, создание списка lookaside с помощью ExInitializeNPagedLookasideList и выделение из него с помощью ExAllocateFromNPagedLookasideList является более эффективным, чем выполнение частых вызовов ExAllocatePoolWithTag, особенно для записей, размер которых не является несколькими PAGE_SIZE.
Если какие-либо потоки ожидают объекта очереди при вызове KeInsertQueue, ожидание одного потока удовлетворено этим вызовом. Поток отправляется для выполнения с заданным указателем записи.
Если потоки в настоящее время не ожидают объекта очереди при вызове KeInsertQueue, указанная запись вставляется в очередь, а состояние сигнала объекта очереди увеличивается.
Дополнительные сведения об использовании внутренних очередей, управляемых драйвером, см. в Driver-Managed очередях.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| заголовка | ntifs.h (include Ntifs.h) |
| библиотеки | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= DISPATCH_LEVEL |
| правил соответствия DDI | HwStorPortProhibitedDIs(storport) |
См. также
ExAllocateFromNPagedLookasideList