IoInitializeWorkItem 函数 (wdm.h)

IoInitializeWorkItem 例程初始化调用方已分配的工作项。

语法

void IoInitializeWorkItem(
  [in] PVOID        IoObject,
  [in] PIO_WORKITEM IoWorkItem
);

参数

[in] IoObject

指向调用方驱动程序对象的指针或调用方的设备对象之一。 如果调用方稍后将工作项传递给 ioQueueWorkItemIoObject 必须指向设备对象。

[in] IoWorkItem

指向要初始化 IO_WORKITEM 结构的指针。

返回值

没有

言论

驱动程序为 IO_WORKITEM 结构分配自己的存储,然后调用 IoInitializeWorkItem 来初始化它。 必须从非分页池分配内存。 若要确定保存 IO_WORKITEM 结构所需的字节数,请调用 IoSizeofWorkItem

IoInitializeWorkItem初始化的 IO_WORKITEM 结构,必须先IoUninitializeWorkItem 初始化,然后才能释放它。

相关例程 IoAllocateWorkItem分配和初始化工作项。 通过将分配和初始化合并到单个调用中,IoAllocateWorkItem 可能比 IoInitializeWorkItem更方便,后者仅初始化。 但是,驱动程序需要 IoInitializeWorkItem,这些驱动程序必须初始化以前分配的存储中的工作项。

例如,驱动程序可能会为工作项池分配存储块。 驱动程序可以调用 IoInitializeWorkItem,以在从池中分配工作项时初始化工作项。 驱动程序可以调用 IoUninitializeWorkItem 在返回到池时取消初始化工作项。 在池的初始存储分配期间,驱动程序可以调用 IoSizeofWorkitem 来确定要为每个工作项分配多少存储。

有关工作项的详细信息,请参阅 系统工作线程

要求

要求 价值
最低支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别

另请参阅

IO_WORKITEM

IoAllocateWorkItem

IoQueueWorkItem

IoQueueWorkItemEx

IoSizeofWorkItem

IoUninitializeWorkItem