PowerEnumerate 函数返回啥结构/数据
Posted
技术标签:
【中文标题】PowerEnumerate 函数返回啥结构/数据【英文标题】:What structures/data does PowerEnumerate function returnPowerEnumerate 函数返回什么结构/数据 【发布时间】:2009-06-08 14:26:44 【问题描述】:新Vista API的文档说PowerEnumerate函数可以用来枚举电源方案,方案设置,信息丰富,最后两个参数是Buffer和BufferSize,不清楚的是什么结构或数据布局/format 用于 API 返回到缓冲区的数据?
【问题讨论】:
伙计,+1 因为这是我在 MSDN 中见过的最丑陋的 API 文档。我这辈子都不知道如何使用该缓冲区,除非可能在手表中检查它并尝试它是字符串还是 guid 或其他东西。 【参考方案1】:输出缓冲区是一个 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);如您所见,步骤如下:
-
获取当前电源方案
枚举当前方案中的磁盘设置
打印每个枚举设置的友好名称
在我的机器上输出:
关闭硬盘后 硬盘爆裂忽略时间希望这可以帮助您指明正确的方向。
这不是生产质量代码,它偏爱小尺寸和乐观的缓冲区大小而不是健壮性。
【讨论】:
以上是关于PowerEnumerate 函数返回啥结构/数据的主要内容,如果未能解决你的问题,请参考以下文章
栈和队列数据结构的特点,啥情况下用到栈,啥情况下用到队列(各举3个例子)
matlab newff函数的返回值是一个结构体吗?,请问结构体里面都有啥,分别代表啥