Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];

Вниз

Memory maped files, hooks, DLL s, global heap - помогите разобраться.   Найти похожие ветки 

 
Latspell   (2001-12-21 16:39) [0]

Здравствуйте, коллеги !
Возникла такая ситуация: на моём компьютере при загрузке одна из программ (не моя) устанавливает глобальный hook на нажатие правой кнопки мыши.
Раньше всё было прекрастно - при щелчке на клиентскую область окна Explorer-а содержащего, к примеру, вид папок и файлов на диске С hook срабатывал и после его срабатывания выпадала стандартная менюшка.
Сейчас мне понадобилось поставить ещё один hook на это же событие. Моя программа ставит hook и пересылает сообщение дальше по цепочке.
Но проблема оказалось в том, что мой hook, находящийся в конце очереди hook-ов выполняется, но процедура передачи сообщения дальше не происходит или происходит не правильно.
После прочтения литературы выяснил, что т.к. мой hook запускается из DLL, то данные к нему относящиеся необходимо объявлять как глобальные и использовать для этого надо механизм Windows, - файлы отображённые в память.
При попытке разобраться в структуре работы с этими файлами с помощью SDK зашёл в тупик и мало того, в голове моей образовался сумбур, даже относительно того, что знал.
Итак - если у вас хватит терпения,- помогите мне.
Мои соображения: при загрузке DLL, её код физически помещается в кучу (т.е. всё что есть в DLL по битикам переносится в оперативную память). При попытке других приложений воспользоваться уже загруженной DLL на АП процесса, который загружает DLL, проецируются данные, находящиеся в кучи, т.е.
в АП этого процесса передаются адреса ф-ий и процедур имеющихся в DLL, а так же в АП отводится свой сегмент под данные загруженной DLL. Таким образом, при обращении из моей программы к ф-ии DLL, обработка данных, хранящихся в "моём" АП производится кодом, находящимся в куче - это верно ?
Теперь не могли бы вы объяснить мне каким образом hook поставленный не моей программой "узнает" о том сегменте памяти в куче, которая будет хранить данные после того как сработает мой hook и передаст сообщение дальше ? (это относительно механизма файлов отражённых в память).
Если я храню какие-то данные в куче (а именно это, как я понял, позволяет делать механизм отражения в память), то при завершении работы моего процесса эти данные будут уничтожены или останутся там, если я сам не позабочусь о их удалении.

Хотелось бы получить квалифицированный ответ на данные темы.
Если не сложно - приведите примеры или вышлите исходники.

Всем заранее благодарен.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-66512
Анонимщик
2002-02-06 11:08
2002.02.21
Помогите с печатью метафайла


4-66701
KarlovAF
2001-12-20 16:34
2002.02.21
Как убрать горизонтальный скролбар с TDBGrid-а?


3-66448
AndreyP
2002-01-28 12:09
2002.02.21
БД Clarion


6-66645
XCreator
2001-11-29 02:01
2002.02.21
Получение данных о пользователях программы через инет


3-66494
DeNNiss
2002-01-29 15:52
2002.02.21
уважаемые программисты!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский