我目前正在使用C#和Win32互操作来注册电源设置通知,枚举电源设置指南等。在此过程中,我遇到了名为“PowerIsSettingRangeDefined”的MSDN文档中的一个函数有用。当我导入该函数并尝试测试它时,编译器抛出了“System.EntryPointNotFound”异常。显然,我仔细检查了我的拼写等,但无济于事。所以我在我的计算机上查找了头文件,我确实找到了8.0 SDK的'powrprof.h'标题中列出的函数,但是,我没有这台计算机上的7.0或7.0A SDK的副本。但根据文档,这应该是从Windows 7开始实现的。所以这应该有效......
然后我使用ProcessHacker检查我的进程中'powrprof.dll'模块的导出表。功能不在那里!为了更进一步,我在位于“C:\ Windows \ SysWOW64 \”的实际“powrprof.dll”文件中使用了PE Explorer,并且相关的入口点也不在名单列表中。因此官方头文件包含上面带有“#if(NTDDI_VERSION> = NTDDI_WIN7)”的这个函数,文档显示该函数从Win7开始存在,但是,在编译'powrprof.dll时,似乎MS团队没有包含它'对于Windows 7。
也许有人可以在Windows 8.1 / 10中检查他们的副本,看看这个问题是否仅适用于Windows 7?我在这栋楼里没有其他版本的Windows,或者我自己测试一下。在尝试向微软报告此事之前,我想首先引起它的注意,以防万一我错过了什么。