Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > [DLL] data_seg() - struct - class |
Автор: MuForum 4.11.2010, 01:58 | ||||||
Доброго времени суток. На днях появилась задача: Создать .dll, которая будет перехватывать все нажатия клавиатуры в системе. Другими словами глобальный хук. Необходимо было передавать в *.dll имя класса и имя окна, для дальнейшей обработки. Естественно для этих целей должны были быть глобальный переменные, которые смогут использовать всем загруженные программы. Помучившись с сохранением данных, наткнулся на data_seg() - Выделением собственной секции для данных. Наткнувшись на подводные камни, решил описать их. # Общий шаблон:
Начнёмс... Во-первых: Обращаю ваше внимание на тот факт, что в нашей секции будут лишь те переменные, которые изначально будут инициализированы!!! - То есть, переменная fValue будет в контексте каждой программы иметь свои значения! Во-вторых: Так же может встать вопрос, а как создать класс, чтобы он тоже имел одну область памяти в контексте всех программ?
- Надо заметить, что это будет бесполезная трата времени, так как класс будет у всех контекстов иметь разную область памяти. - Необходимо осуществить инициализацию класса, то есть, вызвать конструктор класса(не стандартный), а передав какие-то данные.
- В таком случае всё будет нормально, и мы сможем использовать наш класс в контекстах всех программ. Вот со структурой я так и не разобрался, скорее всего и не получится, так как как структуру инициализировать я себе не представляю. - Собственно я и так рад, что получилось с классом, класс вполне восполнит все мои задачи. P.S. -> Надеюсь кому-то пригодится. - Тему создал собственно по той причине, что заколебался создавать глобальные переменные, получается каша... |
Автор: xvr 5.11.2010, 15:20 | ||
Кстати, вам сильно повезло, что класс с конструктором лег в инициализированную секцию. Может и не лечь (даже если просто поменять уровень оптимизаций). Структуру (точнее POD структуру), кстати, точно можно разместить таким образом:
|