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 将队列对象的初始信号状态设置为 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