QueryDisplayConfig 不返回任何记录的值
QueryDisplayConfig does not return any of its documented values
系统启动时,我有一个Windows服务,该服务正在与其系统和用户进程一起加载。加载用户进程后(作为管理员(,我立即调用 QueryDisplayConfig 来检查显示特定信息。问题是,有时,只有有时 QueryDisplayConfig 返回的值既不是其可能的返回值。
解决方法是在调用 QueryDisplayConfig 打开和关闭 Windows 注册表之前。这很有趣,但不知何故它解决了问题。我想知道 regedit 是什么.exe它是否迫使 Windows 更新注册表。
这个问题可能没有解决方案,我将不得不求助于以下解决方案,这也是一种解决方案:
LONG lResult = QueryDisplayConfig(QDC_DATABASE_CURRENT, &PathArraySize, PathArray.data(), &ModeArraySize, ModeArray.data(), &CurrentTopology);
while (lResult != ERROR_SUCCESS &&
lResult != ERROR_INVALID_PARAMETER &&
lResult != ERROR_NOT_SUPPORTED &&
lResult != ERROR_ACCESS_DENIED &&
lResult != ERROR_GEN_FAILURE &&
lResult != ERROR_INSUFFICIENT_BUFFER)
{
Sleep(300);
lResult = QueryDisplayConfig(QDC_DATABASE_CURRENT, &PathArraySize, PathArray.data(), &ModeArraySize, ModeArray.data(), &CurrentTopology);
}
我宁愿不诉诸这种丑陋的解决方法,而是以编程方式更新/刷新 Windows 注册表。
关闭/重新打开 REGEDIT,有时在通过 REGEDIT 搜索注册表时会得到不同的结果,如果我不这样做。这是在WS08R2上。我以为这是REGEDIT本身的问题。现在听起来像是一个可能的Windows错误。如果是这种情况,那就没有任何漂亮的解决方法了。
基于Windows内部,注册表在内存中操作。因此,任何对值/键的查询都将始终来自内存。如果值/键当前不在内存中,则会首先读取它,但读取后的代码路径与它已经在内存中一样。磁盘配置单元不应比内存中配置单元的该部分更新。
因此,根据记录的设计,"刷新"注册表并没有真正的意义。因此,我不希望有一个 API 来"刷新"。
我认为最不丑陋的方法(取决于你的审美意识(是尝试模仿REGEDIT所做的。当你关闭它时,它会保存在注册表中上次浏览的位置,所以下次你运行REGEDIT时,它将(至少(打开并读取填充REGEDIT窗口所需的任何配置单元,键和值。
因此,您可以在下次从QueryDisplayConfig
获得意外值时运行REGEDIT,并查看正在显示的键和值。然后将其编码到您的程序中。当然,您实际上不必显示值,只需打开并读取它们即可。
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 将两个数组中的差异记录在第三个数组中
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- 链表c++插入,所有情况都已检查,但没有任何工作
- C++模板函数,用于比较任何无符号整数和有符号整数
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 尝试摆脱任何堆内存分配
- 是否有任何C++功能可以对地图进行排序?
- 打印时有二叉树问题.用户输入不打印任何内容
- 套接字记录未读取任何消息
- 如何使用BOOST_LOG_TRIVIAL宏将任何内容记录到标准输出/标准和文件
- QMediaRecorder不记录任何内容
- C++宏中的函数式编程风格:这是否记录在任何地方
- QueryDisplayConfig 不返回任何记录的值
- 是否有任何标准的Visual Studio 2008插件可用于跟踪/记录C++项目的构造函数和析构函数调用