IoInitializeWorkItem 函数 (wdm.h)
IoInitializeWorkItem 例程初始化调用方已分配的工作项。
语法
void IoInitializeWorkItem(
[in] PVOID IoObject,
[in] PIO_WORKITEM IoWorkItem
);
参数
[in] IoObject
指向调用方驱动程序对象的指针或调用方的设备对象之一。 如果调用方稍后将工作项传递给 ioQueueWorkItem
[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 | 任何级别 |