IInterruptSync 接口 (portcls.h)

接口 IInterruptSync 表示中断同步对象,该对象 (ISR) 非 ISR 例程同步中断服务例程列表的执行。 PortCls 系统驱动程序实现此接口并将其公开给适配器驱动程序。 微型端口驱动程序通过调用 PortCls 函数 PcNewInterruptSync 来获取对IInterruptSync对象的引用,该函数创建连接到中断资源的新IInterruptSync对象。 IInterruptSync 继承自 IUnknown 接口。

IInterruptSync::RegisterServiceRoutine 方法将 ISR 与同步对象相关联。 多个 ISR 可以与单个同步对象相关联。 发生中断时,同步对象根据 PcNewInterruptSync 函数的 Mode 参数以指定的顺序和方式执行列表中的 ISR。

的另一个方面 IInterruptSync 是它能够将 ISR 的执行与非 ISR 的其他例程同步。 将非 ISR 例程传递到 IInterruptSync::CallSynchronizedRoutine 并开始运行后,将保证执行向同步对象注册的任何 ISR,直到该例程完成运行。

RegisterServiceRoutineCallSynchronizedRoutine 方法都接受 PINTERRUPTSYNCROUTINE 类型的函数指针,定义如下:

  typedef NTSTATUS (*PINTERRUPTSYNCROUTINE)
  (
      IN  struct IInterruptSync *InterruptSync,
      IN  PVOID                  DynamicContext
  );

InterruptSync 成员是指向同步对象的指针。 DynamicContext 成员包含一个上下文值,该值在调用例程时传递给该例程。

有关详细信息,请参阅 中断同步对象

继承

IInterruptSync 接口继承自 IUnknown 接口。

方法

IInterruptSync 接口具有以下方法。

 
IInterruptSync::CallSynchronizedRoutine

CallSynchronizedRoutine 方法调用一个例程,该例程不是中断服务例程 (ISR) ,但其执行需要与 ISR 同步。
IInterruptSync::Connect

Connect 方法将同步对象连接到中断。
IInterruptSync::D isconnect

Disconnect 方法断开同步对象与中断的连接。
IInterruptSync::GetKInterrupt

GetKInterrupt 方法从端口类同步对象获取 WDM 中断对象。
IInterruptSync::RegisterServiceRoutine

RegisterServiceRoutine 方法 (发生中断时调用的 ISR) 注册中断服务例程。

要求

要求
目标平台 Windows
标头 portcls.h