IO_WORKITEM_ROUTINE 回调函数 (wdm)

工作项例程为 IoQueueWorkItem例程排队的工作项执行处理。

语法

IO_WORKITEM_ROUTINE IoWorkitemRoutine;

void IoWorkitemRoutine(
  [in]           PDEVICE_OBJECT DeviceObject,
  [in, optional] PVOID Context
)
{...}

参数

[in] DeviceObject

指向调用方的设备对象之一的指针。 这是在分配工作项时作为DeviceObject参数传递给IoAllocateWorkItem的指针,或者作为在工作项初始化时IoInitializeWorkItemIoObject参数。

[in, optional] Context

指定驱动程序特定的上下文信息。 这是在工作项排队时作为 上下文 参数传递给 IoQueueWorkItem 的值。

返回值

备注

驱动程序通过调用IoQueueWorkItem来对工作项例程进行排队,并且系统工作线程随后执行例程。 工作项例程在有限的时间内必须运行;否则,系统可能会死锁。 有关详细信息,请参阅 系统工作线程

工作项例程在% PASSIVE_LEVEL 和系统线程上下文中运行。

示例

若要定义 工作 项回调例程,必须先提供一个函数声明,用于标识正在定义的回调例程的类型。 Windows 为驱动程序提供一组回调函数类型。 使用回调函数类型声明函数有助于Code Analysis 驱动程序静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,这是为 Windows 操作系统编写驱动程序所必需的。

例如,若要定义名为 MyWorkItem工作项回调例程,请使用 IO_WORKITEM_ROUTINE 类型,如下面的代码示例所示:

IO_WORKITEM_ROUTINE MyWorkItem;

然后,按如下所示实现回调例程:

_Use_decl_annotations_
VOID
  MyWorkItem(
    PDEVICE_OBJECT  DeviceObject,
    PVOID  Context 
    )
  {
      // Function body
  }

在 Wdm 到头文件中定义了 IO_WORKITEM_ROUTINE 函数类型。 若要更准确地识别运行代码分析工具时的错误,请确保将 Use_decl_annotations 批注添加到函数定义。 Use_decl_annotations 批注确保使用应用到头文件中的 IO_WORKITEM_ROUTINE 函数类型的批注。 有关函数声明的要求的详细信息,请参阅 使用 WDM 驱动程序的函数角色类型声明函数。 有关 Use_decl_annotations 的信息,请参阅对 函数行为进行批注

要求

   
目标平台 桌面型
标头 wdm (包括 Wdm、Ntddk、Ntifs)
IRQL 在 PASSIVE_LEVEL 调用。

请参阅

IO_WORKITEM

IoQueueWorkItem