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 时,它必须加载 StorPortInitializeDpc 例程的 HwDpcRoutine 参数,并使用指向 HwStorDpcRoutine 例程的指针。

保证 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作系统编写驱动程序的要求。

例如,若要定义 HwStorDpcRoutine 名为 MyHwDpcRoutine 的回调例程,请使用 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 时,它必须加载 StorPortInitializeDpc 例程的 HwDpcRoutine 参数,并具有指向 HwStorDpcRoutine 例程的指针。

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

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc