新的 Vista API 的文档说 PowerEnumerate 函数可用于枚举电源方案、方案设置和丰富的信息,最后两个参数是 Buffer 和 BufferSize,不清楚的是什么结构或数据布局/格式用于 API 在缓冲区中返回的数据?
cchubasco
问问题
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 回答