共用方式為


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_PACKETActiveInterruptsAutoClearOnRead 旗標位的討論。

FormatIoRequestsAsMasks

讀取或寫入 GPIO 針腳的回呼函式是否應該將讀取和寫入值指定為 64 位遮罩。 如果設定此旗標,GpioClx 會使用 CLIENT_ReadGpioPinsUsingMask 回呼,將 GPIO 針腳值讀入遮罩中,以及使用遮罩來指定 GPIO 針腳設定和清除 的CLIENT_WriteGpioPinsUsingMask 回呼。 否則,GpioClx 會使用 CLIENT_ReadGpioPinsCLIENT_WriteGpioPins 回呼,這些回呼會使用針腳編號陣列來指定要存取的 GPIO 針腳。 如需詳細資訊,請參閱 GPIO_CLIENT_REGISTRATION_PACKETFormatIoRequestsAsMasks 旗標位的討論。

DeviceIdlePowerMgmtSupported

GPIO 控制器是否支援裝置層級電源管理。 如果設定此旗標,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 結構的 Flags 成員是CONTROLLER_ATTRIBUTE_FLAGS結構。

GpioClx 會實作中斷服務例程, (ISR) 到 GPIO 控制器的服務中斷。 如果已設定 MemoryMappedController 旗標位,此 ISR 會直接存取 GPIO 控制器的硬體快取器。 否則,ISR 會排程背景工作線程來處理中斷,而這個在 IRQL = PASSIVE_LEVEL執行的背景工作線程會呼叫驅動程式的中斷相關回呼函式來處理中斷。 這些函式會使用 I/O 要求,在 GPIO 控制器的緩存器中往返傳輸數據和控制資訊。 因為這些 I/O 要求是從被動層級線程傳送,所以可以同步傳送。

如需 MemoryMappedController 旗標位的詳細資訊,請參閱 中斷相關的回呼

主動-兩個中斷是邊緣觸發的中斷,其中斷要求會以低到高或中斷線上的高到低轉換來表示。 在低到高轉換訊號發出中斷要求之後,中斷線會保持高,直到高到低轉換會發出下一個中斷要求的訊號為止。 同樣地,在高到低轉換訊號發出中斷要求之後,中斷線會維持低,直到低到高轉換會發出下一個中斷要求的訊號。

按鈕裝置通常會連線到作用中-兩者中斷。 當使用者按下按鈕時會產生插斷,並在放開按鈕時產生另一個中斷。 如果設備驅動器的ISR連接到主動-兩個中斷,則會在訊號線的上升和下降邊緣上呼叫ISR。

有些 GPIO 控制器會在硬體中實作主動-兩個中斷輸入。 不過,如果硬體不支持主動-兩個中斷,GPIO 控制器驅動程序會設定 EmulateActiveBoth 旗標,要求 GpioClx 模擬軟體中的主動-兩個中斷。 設定此旗標的驅動程序必須實作 CLIENT_ReconfigureInterrupt 回呼函式。 為了模擬主動-兩個中斷接點,GpioClx 會呼叫此函式,以替代方式為主動-高和主動低階模式中斷設定 GPIO 針腳。

規格需求

需求
最低支援的用戶端 從 Windows 8 開始支援。
標頭 gpioclx.h

另請參閱

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryActiveInterrupts

CLIENT_ReadGpioPins

CLIENT_ReadGpioPinsUsingMask

CLIENT_ReconfigureInterrupt

CLIENT_WriteGpioPins

CLIENT_WriteGpioPinsUsingMask

GPIO_CLIENT_REGISTRATION_PACKET