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 控制器的功能,ISR 在 DIRQL 或 PASSIVE_LEVEL 调用。 有关详细信息,请参阅 Interrupt-Related 回调

如果 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 控制器中各银行的中断锁。 但是,如果驱动程序已在此银行上持有锁,则驱动程序尝试获取特定银行上的锁是一个致命错误。

如果 上下文 参数为 NULL 或指向无效的 GPIO 设备上下文,此方法会导致在 GpioClx 的调试版本中进行 bug 检查。

要求

要求 价值
最低支持的客户端 从 Windows 8 开始可用。
目标平台 普遍
标头 gpioclx.h
Msgpioclxstub.lib
IRQL DIRQL 或PASSIVE_LEVEL。 请参阅“备注”。

另请参阅

GPIO_CLX_ReleaseInterruptLock