| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Доступ к глобальной памяти в MS VC++ |
| Автор: Fixin 6.1.2004, 19:28 |
| Как получить доступ к глобальной памяти в MS VC++, ведь структура форточек дает доступ указателям только в своем собственном адр. пространстве для каждой программы. |
| Автор: mr.DUDA 7.1.2004, 22:22 |
| Использовать длл с разделяемыми (shared) сегментами и специальными функциями для доступа к таким сегментам. Грузим такую длл-ку в адресное пространство двух разных процессов - и пожалуйста, данные можно передавать из процесса в процесс (как вариант - использовать shared-переменную как буфер для организации доступа к любым ячейкам памяти любого из процессов). |
| Автор: Fixin 8.1.2004, 18:30 |
| Спасибо за ответ, но у меня нет такого опыта, может какой-нибудь мини-примерчик? |
| Автор: mr.DUDA 8.1.2004, 21:41 | ||||
| Пример: 1) код из my.dll:
2) код из EXE, использующий разделяемую между процессами переменную g_dwSomeGlobalData:
|
| Автор: Fixin 9.1.2004, 18:41 |
| Спасибо за обучение, сейчас попробую! |
| Автор: Fixin 11.1.2004, 18:34 |
| Спасибо, конечно, за это, но вообще я имел ввиду всю память компьютера, а эта прога позволяет только обмен между двумя процессами, которые оба загрузили эту библиотеку, или я чего не понял? Короче, хочу узнать как работает ArtMoney. |
| Автор: mr.DUDA 11.1.2004, 19:32 |
| Тогда нужно смотреть MSDN по ф-циям DebugActiveProcess / ReadProcessMemory / WriteProcessMemory. Или идти на wasm.ru и читать статьи по распределению памяти в Win32, по VMM и т.п. |
| Автор: neurocod 4.2.2004, 19:48 |
| Можно обойтись без DLL при помощи CreateFileMapping - пример в MSDN |