exInitializeWorkItem 函式 (wdm.h)
ExInitializeWorkItem 會使用呼叫端提供的內容和回呼例程,初始化工作佇列專案,以在系統背景工作線程獲得控制權時排入佇列以供執行。
警告
請特別小心使用此例程。 請參閱下面的一節。
語法
void ExInitializeWorkItem(
[in] PWORK_QUEUE_ITEM Item,
[in] PWORKER_THREAD_ROUTINE Routine,
[in] PVOID Context
);
參數
[in] Item
要初始化之呼叫端配置WORK_QUEUE_ITEM結構的指標。 此結構必須從非分頁集區配置。 當呼叫 ExFreePool 或 ExFreePoolWithTag 不再需要此工作專案時,例程參數中指定的回呼例程會負責釋放此工作專案。
[in] Routine
呼叫端定義例程的指標,該例程將呼叫以處理工作專案。 此例程會在 IRQL PASSIVE_LEVEL的系統線程內容中呼叫。 此例程宣告如下:
VOID
(*PWORKER_THREAD_ROUTINE)(
IN PVOID Parameter
);
參數
在 Context 參數中傳遞的內容信息指標。
[in] Context
要傳遞至 Routine 參數中所指定回呼例程之呼叫端提供之內容資訊的指標。
傳回值
無
備註
ExInitializeWorkItem 會使用指定的回呼例程和內容指標和 NULL 清單指標,初始化工作專案。
若要將工作專案新增至系統工作佇列,請呼叫 ExQueueWorkItem。
工作專案是有限的資源,驅動程式應該只視需要加以配置。 例如,請勿在 DriverEntry 中為驅動程式的專用用途配置工作專案。
ExInitializeWorkItem 和 ExQueueWorkItem 只能在指定的工作專案未與任何裝置物件或裝置堆疊相關聯的情況下使用。 在其他所有情況下,驅動程式都應該使用IoAllocateWorkItem、IoFreeWorkItem和IoQueueWorkItem,因為只有這些例程可確保與指定工作專案相關聯的裝置物件仍可供使用,直到處理工作項目為止。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | wdm.h (包括 FltKernel.h、Ntifs.h、Ntddk.h、Wdm.h) |
IRQL | 任何層級 |