新的 Vista API 的文档说 PowerEnumerate 函数可用于枚举电源方案、方案设置和丰富的信息,最后两个参数是 Buffer 和 BufferSize,不清楚的是什么结构或数据布局/格式用于 API 在缓冲区中返回的数据?
1596 次
1 回答
3
输出缓冲区是一个 GUID。您可以使用此 guid 对 Power* 函数进行额外调用(即递归遍历树、查询设置名称和值等)。
例如,以下代码从当前电源方案中的磁盘电源设置中枚举了一些设置名称:
GUID *方案;
if(ERROR_SUCCESS == PowerGetActiveScheme(NULL, &scheme))
{
GUID 缓冲区;
DWORD bufferSize = sizeof(buffer);
for(int index = 0; ; index++)
{
if(ERROR_SUCCESS == PowerEnumerate(
无效的,
方案,
&GUID_DISK_SUBGROUP,
ACCESS_INDIVIDUAL_SETTING,
指数,
(UCHAR*)&缓冲区,
&缓冲区大小))
{
UCHAR 显示缓冲区[1024];
DWORD displayBufferSize = sizeof(displayBuffer);
if(ERROR_SUCCESS == PowerReadFriendlyName(
无效的,
方案,
&GUID_DISK_SUBGROUP,
&缓冲,
显示缓冲区,
&displayBufferSize))
{
wprintf(L"%s\n", (wchar_t*)displayBuffer);
}
}
}
}
如您所见,步骤如下:
- 获取当前电源方案
- 枚举当前方案中的磁盘设置
- 打印每个枚举设置的友好名称
在我的机器上输出:
关闭硬盘后 硬盘爆裂忽略时间
希望这可以帮助您指出正确的方向。
这不是生产质量代码,它倾向于小尺寸和乐观的缓冲区大小而不是健壮性。
于 2009-06-12T04:14:49.110 回答