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)。

要求

要求 价值
目标平台 窗户
标头 portcls.h