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 呼叫。 如需詳細資訊,請參閱 中斷相關的回呼。
如果 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 偵錯組建中的錯誤檢查。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平台 | Universal |
標頭 | gpioclx.h |
程式庫 | Msgpioclxstub.lib |
IRQL | DIRQL 或位於 PASSIVE_LEVEL。 請參閱<備註>。 |