PoFxPowerControl 函式 (wdm.h)
PoFxPowerControl 例程會將電源控制要求傳送至電源管理架構, (PoFx) 。
語法
NTSTATUS PoFxPowerControl(
[in] POHANDLE Handle,
[in] LPCGUID PowerControlCode,
[in, optional] PVOID InBuffer,
[in] SIZE_T InBufferSize,
[out, optional] PVOID OutBuffer,
[in] SIZE_T OutBufferSize,
[out, optional] PSIZE_T BytesReturned
);
參數
[in] Handle
句柄,表示向PoFx註冊裝置。 設備驅動器先前已從 PoFxRegisterDevice 例程收到此句柄。
[in] PowerControlCode
電源控制件程式代碼的指標。 此程式代碼是指定所要求作業的 GUID 值。
[in, optional] InBuffer
呼叫端配置的緩衝區指標,其中包含作業的輸入數據。 此緩衝區中的數據格式取決於 PowerControlCode 參數所指定的電源控制程式代碼。 InBuffer 參數是選擇性的,如果指定的作業不需要輸入數據,則可以指定為 NULL。
[in] InBufferSize
InBuffer 參數所指向之輸入緩衝區的大小,以位元組為單位。 如果 InBuffer 為 NULL,請將 InBufferSize 設定為零。
[out, optional] OutBuffer
呼叫端配置緩衝區的指標,該緩衝區是包含作業的輸出數據。 此緩衝區中的數據格式取決於 PowerControlCode 參數所指定的電源控制程式代碼。 OutBuffer 參數是選擇性參數,如果指定的作業不會產生任何輸出數據,則可以指定為 NULL。
[in] OutBufferSize
OutBuffer 參數所指向之輸出緩衝區的大小,以位元組為單位。 如果 OutBuffer 為 NULL,請將 OutBufferSize 設定為零。
[out, optional] BytesReturned
例程寫入寫入 OutBuffer 所指向緩衝區之數據位元組數目的位置指標。 寫入的位元組數目會小於或等於 OutBufferSize。 此參數是選擇性的,如果呼叫端不需要知道有多少位元組寫入輸出緩衝區,則可以指定為 NULL 。
傳回值
如果要求的作業成功,PoFxPowerControl 會傳回STATUS_SUCCESS。 可能的錯誤傳回值包括下列狀態代碼。
傳回碼 | Description |
---|---|
|
未實作要求的電源控制作業。 |
|
POWER Engine 外掛程式 (PEP) 不支援此裝置。 |
備註
設備驅動器會呼叫此例程,直接將電源控制要求傳送至PoFx。 電源控制要求類似於IOCTL) IOCTL (I/O 控制要求。 不過,不同於 IOCTL,電源控制要求會直接傳送至 PoFx,而且不會由裝置堆疊中的其他設備驅動器觀察到。 在 PoFxPowerControl 呼叫期間,PoFx 會同步執行要求的作業。
同樣地,PoFx 也可以將電源控制要求直接傳送至設備驅動器。 驅動程式會在其 PowerControlCallback 例程中處理此要求。
PoFx 會將所有電源控制要求處理委派給電源引擎外掛程式, (PEP) 。 PEP 是選擇性軟體元件,會執行晶元 (SoC) 模組上特定處理器或系統專用的電源管理工作。 如果處理器或 SoC 的硬體廠商為硬體平臺提供 PEP,此 PEP 可能會處理來自設備驅動器的自定義電源控制要求,或可能會將自定義電源控制要求傳送至驅動程式的 PowerControlCallback 例程。 廠商可以指定一組 PowerControlCode GUID,並定義這些 GUID 所指定的作業。 作為選項,設備驅動器可以包含平臺特定的程式代碼,以處理或傳送這些作業的要求。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h |
程式庫 | Ntoskrnl.lib |
Dll | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |