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
STATUS_NOT_IMPLEMENTED
未實作要求的電源控制作業。
STATUS_NOT_SUPPORTED
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

另請參閱

PoFxRegisterDevice

PowerControlCallback