HW_DPC_ROUTINE回调函数 (storport.h)

HwStorDpcRoutine 例程是通过延迟过程调用 (DPC) 机制在 DISPATCH IRQL 上延迟执行的例程。

语法

HW_DPC_ROUTINE HwDpcRoutine;

void HwDpcRoutine(
  PSTOR_DPC Dpc,
  PVOID HwDeviceExtension,
  PVOID SystemArgument1,
  PVOID SystemArgument2
)
{...}

参数

Dpc

指向 Storport DPC 上下文的指针。

HwDeviceExtension

指向每个适配器设备扩展的指针。

SystemArgument1

指向调用方提供的信息的指针。

SystemArgument2

指向调用方提供的信息的指针。

返回值

备注

当微型端口驱动程序调用 StorPortInitializeDpc 来初始化 DPC 时,它必须使用指向 HwStorDpcRoutine 例程的指针加载 StorPortInitializeDpc 例程的 HwDpcRoutine 参数。

DPC 例程的任何特定实例都保证与 DPC 例程的其他实例同步。 DPC 例程可以通过调用 StorPortAcquireSpinLock 获取适当的旋转锁,与 HwStorStartIo 例程或 HwStorInterrupt 例程同步。 有关管理 DPC 例程中的旋转锁的详细信息,请参阅 StorPortIssueDpc

名称 HwStorDpcRoutine 只是占位符。 此例程的实际原型在 storport.h 中定义,如下所示:

typedef
BOOLEAN
HW_DPC_ROUTINE (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );

端口驱动程序在 DISPATCH IRQL 中调用 HwStorDpcRoutine 例程。

示例

若要定义 HwStorDpcRoutine 回调函数,必须先提供一个函数声明,用于标识要定义的回调函数的类型。 Windows 为驱动程序提供了一组回调函数类型。 使用回调函数类型声明函数可帮助 驱动程序的代码分析静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,这是为 Windows 操作系统编写驱动程序的要求。

例如,若要定义名为 MyHwDpcRoutineHwStorDpcRoutine 回调例程,请使用 HW_DPC_ROUTINE 类型,如以下代码示例所示:

HW_DPC_ROUTINE MyHwDpcRoutine;

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

_Use_decl_annotations_
BOOLEAN
MyHwDpcRoutine (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );
  {
      ...
  }

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

要求

要求
目标平台 通用
标头 storport.h (包括 Storport.h)
IRQL DISPATCH_LEVEL (请参阅备注部分。)

另请参阅

当微型端口驱动程序调用初始化 DPC 时,它必须使用指向 HwStorDpcRoutine 例程的指针加载 StorPortInitializeDpc 例程的 HwDpcRoutine 参数。

DPC 例程的任何特定实例都保证与 DPC 例程的其他实例同步。 DPC 例程可以通过调用 获取适当的旋转锁,与例程或例程同步。 有关管理 DPC 例程中的旋转锁的详细信息,请参阅 。

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc