基于 GPIO 的中断资源

将中断发送到常规用途 I/O 的外围设备的驱动程序 (GPIO) 引脚获取 GPIO 中断作为抽象的 Windows 中断资源。 内核模式驱动程序框架 (KMDF) 驱动程序和 用户模式驱动程序框架 (UMDF) 驱动程序通过其 EvtDevicePrepareHardware 事件回调函数接收这些资源。

使用基于 GPIO 的中断资源的外围设备驱动程序可以忽略低级别实现详细信息,例如,中断是由 GPIO 引脚而不是中断控制器生成的,还是由处理器芯片上的中断引脚生成。

基于 GPIO 的中断是 CmResourceTypeInterrupt 类型的资源。 此中断的配置参数包含在描述中断资源的CM_PARTIAL_RESOURCE_DESCRIPTOR结构的 u.Interrupt 成员中。 若要将中断服务例程 (ISR) 连接到中断,UMDF 或 KMDF 驱动程序向中断创建方法提供中断资源 的原始和翻译 说明。

外围设备的 KMDF 或 UMDF 驱动程序调用 WdfInterruptCreate 方法,以将 ISR 连接到来自设备的中断。 此方法的输入参数之一是指向包含中断配置信息的 WDF_INTERRUPT_CONFIG 结构的指针。

如果外围设备驱动程序使用多个 GPIO 中断资源,则此驱动程序必须知道这些资源在原始和已翻译资源列表中的显示顺序,这些资源作为输入参数提供给 EvtDevicePrepareHardware 函数或 OnPrepareHardware 方法。 这些列表中的资源按平台固件中描述它们的顺序显示,这必须与驱动程序预期的顺序匹配。