音訊裝置類別非使用中計時器實作
PortCls 系統驅動程式會利用系統的電源閒置偵測功能,為其音訊用戶端實作閒置計時器。 PortCls 會在初始化計時器時,將兩個逾時值和所需的閒置電源狀態程式化。 PortCls 會監視任何存取 (,例如 I/O 和屬性存取) 裝置,並有效地重設每個存取的計時器計數。 如果計時器逾時,系統會要求電源 IRP 將裝置置於所需的閒置狀態。 裝置處於閒置狀態之後,PortCls 會在新的存取活動發生時啟動裝置備份。
PortCls 包含閒置逾時和閒置電源狀態的硬式編碼預設值。 硬體廠商可以選擇性地將自己的值寫入系統登錄中的驅動程式特定機碼,以覆寫預設值。 如此一來,廠商就可以選取最適合其裝置的電源閒置參數值。
廠商可以覆寫下列電源閒置參數的預設值:
一元時間
當系統以電源輸入模式執行時,此參數會指定閒置時間間隔。 這是系統在電池電力上執行時通常會使用的模式。 此參數的預設值為 0,這會停用處于靜止模式的電源閒置計時器。 硬體廠商可以使用 inf 檔案來設定值,如下所示。
[MyAudioDevice.AddReg] HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
上述 INF 檔案片段會顯示一個十六進位的十六進位 (十六進位) 值,其值為 「1e」,這相當於 30 秒的閒置逾時。
FLG_ADDREG_BINVALUETYPE
其他參數則用來控制登錄機碼的新增方式。 例如 %REG_BINARY% 表示資料會儲存為「原始」資料。 如需詳細資訊,請參閱 INF AddReg 指示詞。
PerformanceIdleTime
當系統在效能模式中執行時,此參數會指定閒置的時間間隔。 這是系統在 AC 電源上執行時通常會使用的模式。 此參數的預設值為 0,這會停用效能模式中的電源閒置計時器。
硬體廠商可以使用 inf 檔案來設定值,如下所示。
[MyAudioDevice.AddReg] HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
索引鍵的值會以秒為單位指定逾時間隔。 在此範例中,2c,01 的值會是 300 秒或五分鐘。
IdlePowerState
此參數會指定當閒置逾時期限到期時,裝置將放入的電源狀態。 此參數的預設值為 3,對應于裝置電源狀態 D3,這是最低電源的裝置低電源狀態。 硬體廠商可以使用 inf 檔案來設定值,如下所示。
[MyAudioDevice.AddReg] HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
放在機碼中的值應該是 0、1、2 或 3,分別對應到裝置電源狀態 D0、D1、D2 或 D3。
只有裝置安裝 INF 檔案建立它們時,才會存在三個電源閒置登錄機碼。 在設定電源閒置計時器之前,PortCls 會嘗試從登錄擷取驅動程式特定的電源閒置參數。 PortCls 會使用預設值來取代它在登錄中找不到的任何電源閒置參數。 如先前所述,預設電源閒置參數值會停用閒置計時器。
如需有關指定一個為一個的一個參數,請參閱PoRegisterDeviceForIdleDetection中最後三個呼叫參數的定義。如需指定一個的一個 PerformanceIdleTime、PerformanceIdleTime和IdlePowerState參數的詳細資訊。
範例
例如,硬體廠商可能想要為音訊裝置指定下列電源閒置參數: 一個0x0000001e ( 30 秒) 、 PerformanceIdleTime = 0x0000012c (300 秒) ,而 IdlePowerState = 0x00000003 (裝置電源狀態 D3) 。 若要啟用這些設定,裝置安裝檔案可以包含包含下列指示詞的 INF AddReg 區段 :
[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00