Отличная статья.
Хочется добавить что через memory mapped file поддержать единые данные тоже можно.
По поводу коммуникации в рамках одного ДЛЛ, но в разных адресных пространствах. Если стоят хуки на сообщения и они завязаны на определённые threads можно между хуками (threadами соответственно) перебрасываться registred messages. После получения и перехвата оных в любом thread по желанию совершать operations.
Not tested yet, but seems to be working.