CONTROLLER_ATTRIBUTE_FLAGS union (gpioclx.h)
CONTROLLER_ATTRIBUTE_FLAGS 結構描述一般用途 I/O (GPIO) 控制器裝置的硬體屬性。
語法
typedef union _CONTROLLER_ATTRIBUTE_FLAGS {
struct {
ULONG MemoryMappedController : 1;
ULONG ActiveInterruptsAutoClearOnRead : 1;
ULONG FormatIoRequestsAsMasks : 1;
ULONG DeviceIdlePowerMgmtSupported : 1;
ULONG BankIdlePowerMgmtSupported : 1;
ULONG EmulateDebouncing : 1;
ULONG EmulateActiveBoth : 1;
ULONG IndependentIoHwSupported : 1;
ULONG Reserved : 24;
};
ULONG AsULONG;
} CONTROLLER_ATTRIBUTE_FLAGS, *PCONTROLLER_ATTRIBUTE_FLAGS;
成員
MemoryMappedController
GPIO 控制器是否為記憶體對應。 如果設定此旗標,GPIO 控制器的硬體快取器會對應至記憶體位址,而且可由在 DIRQL 上執行的 GPIO 控制器驅動程式例程直接存取。 否則,GPIO 控制器的緩存器只能透過 I/O 要求來存取,GPIO 控制器驅動程式會在 IRQL = PASSIVE_LEVEL傳送。 如需詳細資訊,請參閱。
ActiveInterruptsAutoClearOnRead
GPIO 控制器驅動程式讀取時,是否會自動清除作用中中斷。 如果設定此旗標,GpioClx 會假設中斷會在讀取時自動清除,因此,不會明確要求驅動程式在中斷處理期間清除作用中中斷。 否則,GpioClx 會明確要求清除作用中中斷。 如需詳細資訊,請參閱 GPIO_CLIENT_REGISTRATION_PACKET中的 ActiveInterruptsAutoClearOnRead 旗標位的討論。
FormatIoRequestsAsMasks
讀取或寫入 GPIO 針腳的回呼函式是否應該將讀取和寫入值指定為 64 位遮罩。 如果設定此旗標,GpioClx 會使用 CLIENT_ReadGpioPinsUsingMask 回呼,將 GPIO 釘選值讀取到遮罩中,並 CLIENT_WriteGpioPinsUsingMask 使用遮罩來指定要設定和清除 GPIO 針腳的回呼。 否則,GpioClx 會使用 CLIENT_ReadGpioPins 和 CLIENT_WriteGpioPins 回呼,這些回呼會使用針腳編號陣列來指定要存取的 GPIO 針腳。 如需詳細資訊,請參閱 GPIO_CLIENT_REGISTRATION_PACKET中的 FormatIoRequestsAsMasks 旗標位的討論。
DeviceIdlePowerMgmtSupported
GPIO 控制器是否支援裝置層級電源管理。 如果設定此旗標,GPIO 控制器可以在閑置時進入低功率 (D3) 狀態(也就是說,當控制器沒有作用中的連線時)。 否則,每當控制器開啟時,GPIO 控制器會保持完全開啟 (D0) 電源狀態。
BankIdlePowerMgmtSupported
GPIO 控制器是否支援元件層級電源管理。 如果設定此旗標,GPIO 控制器中的一或多個銀行可以獨立於 GPIO 控制器中的其他銀行,進入低功率狀態。 否則,銀行的權力狀態不能個別控制。 此旗標只能針對緩存器為記憶體對應的 GPIO 控制器設定,如 MemoryMappedController 旗標所指示。 一般而言,只有屬於 SoC 模組整合部分的 GPIO 控制器會對應記憶體。 在 SoC 模組外部的 GPIO 控制器通常不是記憶體對應。
EmulateDebouncing
將輸入訊號取消至 GPIO 針腳是否由軟體或硬體執行。 如果設定此旗標,GPIO 控制器需要 GPIO 架構延伸模組 (GpioClx) 在軟體中模擬。 否則,會由硬體執行反彈,而且不需要軟體仿真的反彈。
EmulateActiveBoth
GPIO 控制器驅動程式是否需要 GpioClx 模擬軟體中的主動-兩個中斷。 如果設定此旗標,GpioClx 會在軟體中模擬主動-兩個中斷。 否則,GpioClx 不會模擬主動-兩個中斷。 如需詳細資訊,請參閱。
IndependentIoHwSupported
Reserved
保留供系統使用。
AsULONG
言論
旗標CLIENT_CONTROLLER_BASIC_INFORMATION 結構的成員是 CONTROLLER_ATTRIBUTE_FLAGS 結構。
GpioClx 會實作中斷服務例程 (ISR), 以服務 GPIO 控制器的中斷。 如果已設定 MemoryMappedController 旗標位,則此 ISR 會直接存取 GPIO 控制器的硬體緩存器。 否則,ISR 會排程背景工作線程來處理中斷,而這個在 IRQL = PASSIVE_LEVEL 執行的背景工作線程會呼叫驅動程式的中斷相關回呼函式來處理中斷。 這些函式會使用 I/O 要求,在 GPIO 控制器的緩存器中來回傳輸數據和控制資訊。 由於這些 I/O 要求是從被動層級線程傳送,因此可以同步傳送這些要求。
如需 MemoryMappedController 旗標位的詳細資訊,請參閱 Interrupt-Related 回呼。
主動-兩個中斷是邊緣觸發的中斷,其中斷要求是由中斷線的低到高或高到低轉換來表示。 在低到高轉換發出中斷要求信號之後,中斷線會保持高,直到高到低的轉換訊號發出下一個中斷要求為止。 同樣地,在高到低轉換訊號發出中斷要求之後,中斷線會保持低,直到低到高轉換訊號發出下一個中斷要求為止。
按鈕裝置通常會連線到主動-兩個中斷。 當使用者按下按鈕時會產生中斷,而釋放按鈕時會產生另一個中斷。 如果設備驅動器的ISR連接到主動-兩個中斷,則會在信號線的上升和下降邊緣上呼叫ISR。
某些 GPIO 控制器會在硬體中實作主動-兩個中斷輸入。 不過,如果硬體不支持主動-兩個中斷,GPIO 控制器驅動程式會設定 模擬ActiveBoth 旗標,要求 GpioClx 模擬軟體中的主動-兩個插斷。 設定此旗標的驅動程序必須實作 CLIENT_ReconfigureInterrupt 回呼函式。 為了模擬主動-兩個插斷接點,GpioClx 會呼叫此函式,以替代方式為主動高低層級和主動低階模式中斷設定 GPIO 針腳。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始支援。 |
標頭 | gpioclx.h |