向通用 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 方法。 这些列表中的资源按平台固件中描述的顺序显示,这些固件必须与驱动程序预期的顺序匹配。