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
要傳遞至 例程 參數中所指定回呼例程之呼叫端提供之內容資訊的指標。
傳回值
沒有
言論
ExInitializeWorkItem 使用指定的回呼例程和內容指標,以及 NULL 列表指標,初始化工作專案。
若要將工作專案新增至系統工作佇列,請呼叫 exQueueWorkItem 。
工作專案是有限的資源,驅動程式應該只視需要加以配置。 例如,請勿在 DriverEntry 中配置工作專案供驅動程式專用使用。
ExInitializeWorkItem 和 ExQueueWorkItem 只能在指定的工作專案與任何裝置物件或裝置堆疊無關的情況下使用。 在其他所有情況下,驅動程式都應該使用 IoAllocateWorkItem、IoFreeWorkItem,以及 IoQueueWorkItem,因為這些例程可確保與指定工作專案相關聯的裝置對象在處理工作專案之前仍可使用。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | wdm.h (包括 FltKernel.h、Ntifs.h、Ntddk.h、Wdm.h) |
IRQL | 任何層級 |