Хуки в Win32
От: DeadbraiN Украина http://www.rus.cameldisc.com
Дата: 01.05.04 12:17
Оценка:
Добрый день всем!
Я занимаюсь написанием некоторого "фильтра" сообщений в Win32 с помощью технологии хуков на С++ в чистом API для компилятора gcc. Сам фильтр реализован в виде класса Hook. Те, кто занимался хуками знают, о праблеме распределенной памяти для подключаемых к dll процессам.
Моя праблема:
Мне нужно разместить мой класс в shared секцию так, чтобы он был общим для всех процессов (Если возможно реализовать это другим способом, то напишите как). Также, класс использует динамическую память (например для строк или структур: LPSTR s = (LPSTR)new LPSTR[size]), которая тоже должна быть общей.

Я проанализировал возможности gcc связанные с созданием shared секций. Они создаются слудующим образом (для моего случая):

Hook hook __attribute__((section ("section_name"), shared)) = Hook::Hook();

Но при подключении нового процесса к моей hook.dll, конструктор и деструктор вызываются снова, а переменные этого класса не меняют своего значения.

Я думаю, что можно использовать следующие способы:
— File Mapping. Положить туда свой класс и все динамические данные (объясните как это реализовать).
— С помощью опции линкера --stack=<размер>, указать область побольше и размещать мой класс и все динамические данные в shared секции. (тогда возникает вопрос: "а как выделять память в shared секции?")[/list]
— DDE

Хотелось бы использовать наименее сложный способ.
P.S. Если вы не программировали на gcc, но знаете как это реализовать на Visual C++, помогите всё равно.
Спасибо.
[ Всё, что окружает нас можно понять и представить с помощью чисел ]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.