Re: Понять, как работает RegNotifyChangeKeyValue
От: ononim  
Дата: 19.12.24 05:21
Оценка: 14 (1)

Microsoft Windows 98 does not keep track of interim changes. Calling
RegNotifyChangeKeyValue only notifies you of changes occurring after the
call.

(c) https://comp.os.ms-windows.programmer.win32.narkive.com/pKV4mduh/xp-registry-monitoring-regnotifychangekeyvalue-and-createevent
Просто мс выпилила из статьи описание поведения под 9х руками течврайтера-джуниора, без понимания контекста.
Как много веселых ребят, и все делают велосипед...
Понять, как работает RegNotifyChangeKeyValue
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.12.24 19:50
Оценка:
В последней оффлайновой MSDN от 2008-го о длительности подписки и периодичности уведомлений сказано только это:

This function detects a single change. After the caller receives a notification event, it should call the function again to receive the next notification.


В онлайн-документации MS аж выделено следующее добавление:

Note On Windows NT, Windows 2000, and Windows XP calling RegNotifyChangeKeyValue for a particular key handle causes change notifications to continue to occur for as long as the key handle is valid. This causes a second call to RegNotifyChangeKeyValue to return immediately, if any changes have occurred in the interim period between the first and second calls. If the API is being used asynchronously, the passed event handle will be signaled immediately if any interim changes have occurred.


Как это все понимать? MSDN 2008 выпускалась уже после Vista. Если в работе функции произошли такие радикальные изменения, то странно, почему это не было отражено.

Кто пользовался функцией в разных системах — что меняется между NT/2k/XP и последующими версиями?
Re[2]: Понять, как работает RegNotifyChangeKeyValue
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 19.12.24 09:04
Оценка:
Здравствуйте, ononim, Вы писали:

O>

Microsoft Windows 98 does not keep track of interim changes. Calling
O>RegNotifyChangeKeyValue only notifies you of changes occurring after the
O>call.


О, спасибо, теперь стало чуть понятнее.

Раньше никогда не доводилось пользоваться, а сейчас смотрю и изумляюсь, до чего уродливый механизм. Это ж надо было додуматься ограничить уведомления единственным разом, чтоб потом городить логику промежуточного накопления...

Да и теперь, судя по всему, тоже не получится использовать. Хотел избавиться от частого поллинга реестровых ключей, но уже и не знаю, стоит ли одну кривизну менять на другую. Тем более, что есть вероятность изначального отсутствия в реестре не только "концевых" ключей, в которых надо проверять элементы, но и "корневого" подключа в Windows\CurrentVersion. А если мониторить весь CurrentVersion, то обращений к реестру станет больше на пару порядков, чем при тупом поллинге.
Отредактировано 19.12.2024 9:10 Евгений Музыченко . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.