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。 请参阅“备注”。

另请参阅

GPIO_CLX_ReleaseInterruptLock