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 |