Функция KeInitializeQueue (ntifs.h)
Подпрограмма KeInitializeQueue инициализирует объект очереди, в котором потоки могут ждать записи.
Синтаксис
void KeInitializeQueue(
[out] PRKQUEUE Queue,
[in] ULONG Count
);
Параметры
[out] Queue
Указатель на структуру KQUEUE, для которой вызывающий объект должен предоставить резидентное хранилище в невыгразданном пуле. Эта структура определяется следующим образом:
typedef struct _KQUEUE {
DISPATCHER_HEADER Header;
LIST_ENTRY EntryListHead;
ULONG CurrentCount;
ULONG MaximumCount;
LIST_ENTRY ThreadListHead;
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
Член | Значение |
---|---|
Верхняя часть | Заголовок очереди. |
EntryListHead | Указатель на первую запись в очереди. |
CurrentCount | Текущее число потоков, ожидающих в очереди. |
MaximumCount | Максимальное количество параллельных потоков, которых может удовлетворить очередь. |
ThreadListHead | Указатель на первую запись в списке потоков. |
[in] Count
Максимальное количество потоков, для которых ожидает объект очереди, может быть удовлетворено одновременно. Если этот параметр не указан, используется количество процессоров на компьютере.
Возвращаемое значение
None
Remarks
Обычно вызывающий объект KeInitializeQueue также создает набор выделенных потоков для постановки в очередь и вывода из очереди своих записей. Такой вызывающий объект может указать явное значение Count , чтобы предотвратить одновременное ожидание слишком большого числа выделенных потоков в объекте очереди.
KeInitializeQueue устанавливает начальное состояние сигнала объекта очереди в Значение Not Signaled.
Дополнительные сведения об использовании внутренних очередей, управляемых драйвером, см. в разделе Очереди IRP, управляемые драйвером.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |