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 |