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 控制器中各種銀行的中斷鎖定。 不過,如果司機已經在此銀行持有鎖定,則司機嘗試在特定銀行取得鎖定是一個嚴重錯誤。
如果 Context 參數為 NULL 或指向無效的 GPIO 裝置內容,此方法會導致 GpioClx 偵錯組建中的錯誤檢查。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平臺 | 普遍 |
標頭 | gpioclx.h |
連結庫 | Msgpioclxstub.lib |
IRQL | DIRQL 或位於 PASSIVE_LEVEL。 請參閱。 |