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


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

Максимальное количество потоков, для которых ожидается объект очереди, может быть одновременно удовлетворено. Если этот параметр не указан, используется количество процессоров на компьютере.

Возвращаемое значение

Никакой

Замечания

Обычно вызывающий объект KeInitializeQueue также создает набор выделенных потоков для очереди и отмены его записей. Такой вызывающий объект может указать явный Count, чтобы предотвратить одновременное ожидание большого количества выделенных потоков в объекте очереди.

KeInitializeQueue задает начальное состояние сигнала объекта очереди значение Not Signaled.

Дополнительные сведения об использовании внутренних очередей, управляемых драйвером, см. в Driver-Managed очередях IRP.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

См. также

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread