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。
如需使用驅動程式管理的內部佇列的詳細資訊,請參閱 驅動程式管理的 IRP 佇列。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |