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,直到该例程完成运行。
RegisterServiceRoutine 和 CallSynchronizedRoutine 方法都接受 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 |