GPIO_CLX_AcquireInterruptLock 函数 (gpioclx.h)
GPIO_CLX_AcquireInterruptLock方法在常规用途 I/O (GPIO) 控制器中的引脚组上获取中断锁。
语法
void GPIO_CLX_AcquireInterruptLock(
[in] PVOID Context,
[in] BANK_ID BankId
);
参数
[in] Context
指向 GPIO 控制器驱动程序 的设备上下文的指针。 GPIO 框架扩展 (GpioClx) 将此指针值作为参数传递给由 GPIO 控制器驱动程序实现的回调函数。
[in] BankId
此 GPIO 引脚库的标识符。 如果 N 是 GPIO 控制器中的库数, 则 BankId 是介于 0 到 N–1 范围内的整数。
返回值
无
备注
GPIO 控制器驱动程序线程调用此方法以同步到 gpioClx 中 (ISR) 中断服务例程。 虽然调用方持有中断锁,但 ISR 无法调用驱动程序实现的回调函数来访问指定库中的 GPIO 寄存器。 GPIO 控制器驱动程序在尝试访问 GpioClx ISR 可能访问的 GPIO 寄存器之前,应调用此方法。
GpioClx ISR 调用驱动程序实现的回调函数来访问中断状态并在 GPIO 控制器中启用寄存器。 根据 GPIO 控制器的功能,在 DIRQL 或 PASSIVE_LEVEL 调用 ISR。 有关详细信息,请参阅 与中断相关的回调。
如果 GpioClx ISR 在 DIRQL 上访问这些中断寄存器, GPIO_CLX_AcquireInterruptLock 会将调用线程的 IRQL 提升到运行 ISR 的 DIRQL。 如果 ISR 在PASSIVE_LEVEL运行,则此方法不会更改调用线程的 IRQL。
GPIO_CLX_ReleaseInterruptLock 方法释放在上一次调用 GPIO_CLX_AcquireInterruptLock 中获取的中断锁。 BankId 参数指定受锁影响的库。 若要在银行上释放锁,GPIO_CLX_ReleaseInterruptLock调用的 BankId 参数必须与获取锁的GPIO_CLX_AcquireInterruptLock调用的 BankId 参数匹配。 如果GPIO_CLX_AcquireInterruptLock调用引发调用线程的 IRQL,GPIO_CLX_ReleaseInterruptLock还原此线程的原始 IRQL。
GPIO 控制器驱动程序可以独立获取并释放 GPIO 控制器中各种组的中断锁。 但是,如果驱动程序已对此银行持有锁,则驱动程序尝试获取特定银行上的锁是一个致命错误。
如果 Context 参数为 NULL 或指向无效的 GPIO 设备上下文,则此方法会导致 GpioClx 的调试版本中检查 bug。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | 通用 |
标头 | gpioclx.h |
Library | Msgpioclxstub.lib |
IRQL | DIRQL 或 PASSIVE_LEVEL。 请参阅“备注”。 |