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 的调用方还会创建一组专用线程来排队和取消其条目的排队。 此类调用方可以指定显式 计数 ,以防止过多的专用线程在其队列对象上并发等待。

KeInitializeQueue 将队列对象的初始信号状态设置为“未发出信号”。

有关使用驱动程序管理的内部队列的详细信息,请参阅 驱动程序托管的 IRP 队列

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

另请参阅

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread