PoFxIssueComponentPerfStateChangeMultiple 函式 (wdm.h)
PoFxIssueComponentPerfStateChangeMultiple 例程會提交要求,以同時變更裝置元件的多個效能狀態集合中的效能狀態。
語法
void PoFxIssueComponentPerfStateChangeMultiple(
[in] POHANDLE Handle,
[in] ULONG Flags,
[in] ULONG Component,
[in] ULONG PerfChangesCount,
[in] PO_FX_PERF_STATE_CHANGE [] PerfChanges,
[in] PVOID Context
);
參數
[in] Handle
句柄,表示向PoFx註冊裝置。 裝置驅動程式先前已從 PoFxRegisterDevice 例程收到此句柄。
[in] Flags
修改效能狀態變更作業行為的旗標。 將此成員設定為零或下列其中一個旗標 ,PO_FX_FLAG_XXX 位:
這兩個旗標位互斥。 如需詳細資訊,請參閱<備註>。
[in] Component
識別元件的索引。 此參數是裝置驅動程式用來向PoFx註冊裝置之PO_FX_DEVICE結構中 Components 陣列的索引。 如果 Components 陣列包含 N 個元素,元件索引的範圍從 0 到 N–1。
[in] PerfChangesCount
PerfChanges 陣列中包含的效能狀態變更要求數目。
[in] PerfChanges
PO_FX_PERF_STATE_CHANGE 結構陣列中的第一個專案,代表驅動程式想要轉換的效能狀態。 每個數位元素都代表單一效能狀態變更要求。
[in] Context
ComponentPerfStateCallback 回呼例程的內容指標。 這是選擇性參數。 系統會提供它,以便將驅動程式或裝置內容傳遞至回呼例程。 如果未使用此參數,則必須將它設定為 NULL。
傳回值
無
備註
驅動程式會呼叫 PoFxIssueComponentPerfStateChangeMultiple,電源管理架構 (PoFx) 會要求平台擴充功能外掛程式 (PEP) ,將元件的效能狀態設定設定置於指定的效能狀態。 此例程可以搭配離散和範圍型的效能狀態集使用。 如需離散和範圍型效能狀態集的詳細資訊,請參閱 PO_FX_PERF_STATE_TYPE。
如果 Flags = PO_FX_FLAG_BLOCKING, 則 PoFxIssueComponentPerfStateChangeMultiple 呼叫是同步的。 在此情況下, PoFxIssueComponentPerfStateChangeMultiple 會等候傳回,直到元件完成效能狀態轉換為止。 系統會呼叫驅動程式的 ComponentPerfStateCallback 例程,通知驅動程式元件的效能狀態變更已完成。 這個回呼發生在與呼叫 PoFxIssueComponentPerfStateChangeMultiple 相同的線程中,而且只有在 ComponentPerfStateCallback 回呼傳回之後,才會傳回 PoFxIssueComponentPerfStateChangeMultiple。
如果 Flags = PO_FX_FLAG_ASYNC_ONLY, 則 PoFxIssueComponentPerfStateChangeMultiple 呼叫是異步的。 在此情況下, PoFxIssueComponentPerfStateChangeMultiple 會將 ComponentPerfStateCallback 例程排程排程在另一個線程中,然後傳回而不等待回呼發生。 回呼可以在 PoFxIssueComponentPerfStateChangeMultiple 傳回之前或之後發生。 驅動程式應該依賴 ComponentPerfStateCallback 例程來判斷元件何時完成轉換至新的效能狀態。
驅動程式可以設定 Flags = 0,表示它不小心 PoFxIssueComponentPerfStateChangeMultiple 呼叫是否為同步或異步。 在此情況下,PoFx 會根據 PEP 使用同步或異步要求來對元件發出效能狀態變更,來決定呼叫的同步處理性。
如果 旗標 = PO_FX_FLAG_ASYNC_ONLY 或未傳遞旗標,此例程需要 = DISPATCH_LEVEL IRQL <。 如果 Flags = PO_FX_FLAG_BLOCKING,此例程需要 IRQL = <APC_LEVEL。
不論呼叫的 synchronicity 為何,此函式一律會產生 對 ComponentPerfStateCallback 例程的呼叫。 由於 PEP 可能會選擇拒絕變更效能狀態的要求,因此驅動程式必須等到收到回呼,才能將效能狀態認可至硬體。
不論呼叫是同步還是異步,每個元件一次只允許一次呼叫 PoFxIssueComponentPerfStateChangeMultiple 例程。 發出效能狀態變更要求之後,即使要求牽涉到不同的效能狀態集,驅動程式也必須等到 在收到 ComponentPerfStateCallback 之後再再次呼叫此例程。 如果在收到 ComponentPerfStateCallback 之前再次呼叫此例程,就會發生錯誤檢查。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 10 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h |
程式庫 | Ntoskrnl.lib |
Dll | Ntoskrnl.exe |
IRQL | <= APC_LEVEL 或 <= DISPATCH_LEVEL (请参阅一节) |