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