Механизм перехвата событий в Windows API называется «хуки» (от английского слова «hook» — «ловушка»). 1
Работа хуков в ОС Windows происходит следующим образом: 1
- Разработчик создаёт хук. 1 Операционная система создаёт в памяти структуру данных, которая содержит всю информацию о созданном хуке. 1
- Структура добавляется в связанный список ранее созданных хуков. 1 В этом списке новый хук добавляется перед всеми ранее созданными хуками. 1
- Когда случается событие, то в случае с локальным хуком вызывается фильтрующая функция внутри процесса. 1
- В случае с глобальным хуком система вставляет код хук-функции в адресное пространство того процесса, для которого был установлен данный хук. 1 Для этого система подключает к этому процессу динамическую библиотеку функций и подменяет оригинальную функцию на хук-функцию. 1
При возникновении сообщения, связанного с определённым типом перехватчика, система передаёт сообщение каждой процедуре перехватчика, на которую ссылается цепочка перехватчиков, одна после другой. 2
Действие, которое может выполнить процедура перехвата, зависит от типа перехвата. 2 Некоторые процедуры могут только отслеживать сообщения, другие — изменять сообщения или останавливать их продвижение по цепочке, предотвращая их достижение следующей процедуры перехвата или конечного окна. 2