IConsolePower::SetExecutionState 方法 (mmc.h)

SetExecutionState 方法设置当前线程的执行状态。

语法

HRESULT SetExecutionState(
  [in] DWORD dwAdd,
  [in] DWORD dwRemove
);

parameters

[in] dwAdd

要添加到管理单元执行状态的标志。 这可以是以下标志中的 0 个或更多个的组合。

ES_DISPLAY_REQUIRED

显示器 (监视器) 电源管理要求。 如果在 dwAdd 中指定,则管理单元将禁止操作系统调用显示器的电源管理例程。

ES_SYSTEM_REQUIRED

系统电源管理要求。 如果在 dwAdd 中指定,则管理单元将禁止操作系统调用系统的电源管理例程。

[in] dwRemove

要从管理单元的执行状态中删除的标志。 这可以是上述标志的 0 个或更多个的组合。 通过指定一个或多个标志,管理单元可以关闭先前调用 SetExecutionState 所建立的电源管理要求。

注意 必须先关闭电源管理要求,然后才能将其打开。 尝试在不先关闭电源管理要求的情况下打开电源管理要求会 E_INVALIDARG返回错误。
 

返回值

如果成功,则 返回值S_OK。 在不支持电源管理的系统上调用时,此方法将返回 S_FALSE 。 其他返回值指示错误代码。

注解

调用 IConsolePower::SetExecutionState 而不是 SetThreadExecutionState。 管理单元不得直接调用 SetThreadExecutionState 函数,如果多个管理单元在同一线程上运行,则这样做会导致冲突。

管理单元定义其电源要求,并通过调用 SetExecutionState 将它们发送到 MMC。 在管理单元调用 SetExecutionState 后,其执行状态将保持有效,直到该管理单元对 SetExecutionState 进行另一次调用。 请注意,在调用 SetExecutionState 后,必须使用 IConsolePower 接口的同一实例对 SetExecutionState 的后续调用。 如果管理单元未使用相同的 IConsolePower 实例,则 MMC 无法有效地调用 SetThreadExecutionState。 MMC 维护一个数组来跟踪每个管理单元的执行状态,并为线程上运行的所有管理单元调用 SetThreadExecutionState

示例

HRESULT hr;

// Specify that the display and system are required.
// pConsolePower was created previously by
// the CoCreateInstance method.
hr = pConsolePower->SetExecutionState(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED,0);
switch (hr)
{
    case S_OK:
        OutputDebugString(_T("SetExecutionState: Succeeded\n"));
        break;

    case S_FALSE:
        // The system does not support power management.
        OutputDebugString(_T("SetExecutionState: Unsupported\n"));
        break;

    default:
        // Unexpected error occurred.
        OutputDebugString(_T("SetExecutionState: Failure\n"));
        break;
}

要求

   
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 mmc.h
Library Mmc.lib
DLL Mmcndmgr.dll

另请参阅

IConsolePower::ResetIdleTimer

SetThreadExecutionState