共用方式為


KeInsertQueue 函式 (ntifs.h)

如果 KeInsertQueue 例程無法立即使用專案來滿足線程等候,KeInsertQueue 例程會在指定佇列的結尾插入專案。

語法

LONG KeInsertQueue(
  [in, out] PRKQUEUE    Queue,
  [in, out] PLIST_ENTRY Entry
);

參數

[in, out] Queue

呼叫端在非分頁集區中提供駐留記憶體之初始化佇列物件的指標。

[in, out] Entry

要排入佇列之專案的指標。 此指標必須是固定的系統空間位址。

傳回值

KeInsertQueue 會傳回指定 佇列的先前訊號狀態。 如果它設定為零 (,則未在呼叫 KeInsertQueue 之前發出訊號 ) ,KeInsertQueue 會傳回零,這表示沒有排入佇列的專案。 如果非零 () 發出訊號, KeInsertQueue 會傳回呼叫 KeInsertQueue 之前已排入佇列的項目數。

備註

KeInsertQueue要排入佇列的項目必須從非分頁集區配置。 例如,呼叫端定義專案的記憶體可以使用 ExAllocatePoolWithTag 來配置。 如果呼叫端配置固定大小的專案,請使用 ExInitializeNPagedLopoolsideList 建立 lookaside 列表,並使用 ExAllocateFromNPagedLoativesideList 配置它,比對 ExAllocatePoolWithTag 進行頻繁呼叫更有效率,特別是對於大小不是多個PAGE_SIZE的專案。

如果呼叫 KeInsertQueue 時任何線程正在等候佇列物件,則此呼叫會滿足單一線程的等候。 線程會分派以使用指定的 Entry 指標執行。

如果呼叫 KeInsertQueue 時目前沒有等候佇列物件的線程,則會在佇列中插入指定的專案,並遞增佇列物件的訊號狀態。

如需使用驅動程式管理的內部佇列的詳細資訊,請參閱 驅動程式管理的佇列

規格需求

需求
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport)

另請參閱

ExAllocateFromNPagedLookasideList

ExAllocatePoolWithTag

ExInitializeNPagedLookasideList

KeInitializeQueue

KeInsertHeadQueue

KeRemoveQueue