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

另請參閱

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread