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。
如需使用驅動程式管理的內部佇列的詳細資訊,請參閱 Driver-Managed IRP 佇列。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |