gpt4 book ai didi

c++ - 如何判断哪个值触发了 RegNotifyChangeKeyValue?

转载 作者:可可西里 更新时间:2023-11-01 10:06:30 33 4
gpt4 key购买 nike

我正在使用 RegNotifyChangeKeyValue用于跟踪对我的注册表项和 C++ 示例的更改的 API,类似于该 MSDN 页面底部给出的示例。我将此 API 设置为:

RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Company\\Product", 0, KEY_NOTIFY, &hKey);
RegNotifyChangeKeyValue(hKey, FALSE, REG_NOTIFY_CHANGE_LAST_SET, hEvent, TRUE);

所以,比如说,当这个 API 作为参数的事件发出信号时(这意味着对 Software\Company\Product 键的更改)是否有任何方法可以找出实际的值触发了吗?

最佳答案

没有。在调用 RegNotifyChangeKeyValue 之后,您需要缓存当前的名称/值对,然后在收到信号时,您可以将最新的名称/值对与您的缓存进行比较,看看有什么不同,然后为下一个信号更新您的缓存。

如果您在调用 RegNotifyChangeKeyValue 之前构建缓存,并且在两个操作之间由某个线程进行更新,则您的缓存将不会反射(reflect)实际状态,并且可能会在下一次更新时出现问题(取决于您的需要) .

在 RegNotifyChangeKeyValue 之后构建缓存可能会导致您的代码收到信号但无法知道所关注的值(如果更新是由两个操作之间的另一个线程进行的)。没什么大不了的:假装没有看到任何变化。

关于c++ - 如何判断哪个值触发了 RegNotifyChangeKeyValue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19888347/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com