![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
NET_or_not_NET |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: нет Всего: 1 |
Доброго дня!
У меня возникла проблема с ReadProcessMemory при работе с приложением написанном на C# & VS2005! Когда я использую эту функцию (например с игрой "Минер") то все ОК!!!! все читаеться, все работает! И не только с "минером", с другими приложениями тоже все ок! Но решил я посмотреть что твориться в пямяти в моем приложении... как ![]() Складываеться такое впечетление что работает со всеми прогами написанными где угодно только без участия CLR, .Net FrameWork! надеюсь я страшно заблуждаюсь! Народ ПОМОГИТЕ! наставте на путь истинный! Пишу C# & VS2005 P.S. Написал самое простое: одну форму + одна кнопка + 2-ве переменные! и вот немогу добраться до памяти процесса! В ЧЕМ я ОШИБСЯ???? P.S.S. пробывал OpenProcess со всеми флагами - 0! пробывал сам создавать CreateProcess , Process.Start - 0! P.S.S.S. BaseAddress главного модуля получаеться без проблем! |
|||
|
||||
archeg |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 11 Всего: 27 |
Дай плз пример кода, что именно ты делаешь.
Похоже что твое впечатление правильное:
Кажись всему виной AppDomain -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет ![]() И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
|||
|
||||
NET_or_not_NET |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: нет Всего: 1 |
Даю...
|
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Проблема в том, что в .Net, в отличие от "winmine.exe" есть сборщик мусора. Он запускается самопроизвольно и в своей работе не стесняется удалять и перемещать объекты в куче (а куча - это та память приложения, которую мы хотим знать).
Если в процессе чтения памяти он запустится - результаты выполнения ReadProcessMemory() окажутся непредсказуемыми. ![]() -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
NET_or_not_NET |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: нет Всего: 1 |
Доброго дня, tol05
а если это не ссылочнае значение а значимое и оно не в куче а в стеке? И переменная глобальная? Как догда? тоже сборьщик грохнет?, или он грохнет при закрытии приложения? если при закрытии, то значение в памяти? может прочитать адреес памяти для потока, а не для главного модуля? конечно - если так можно? |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
сборщик работает в куче. Запускается недетерминированно (никто не знает когда, в начале, в конце). Но это не важно, ведь если бы даже ты приноровился к какому-то режиму в одной сборке, то для другой мог бы быть другой режим, так? ![]() Стек заполняется и очищается независимо от кучи. По мере прохода потоком выполнения кода. Ссылочные переменные находятся в куче, неважно, локальные они, глобальные, экземплярные или статические. Значимые - в стеке. Тоже неважно кому они принадлежат. Одним словом, есть мнение, что от этой ф-ции в .Net лучше отказаться. Можно попробовать решить поставленную задачу через члены GC класса. Я имею в виду GC.GetTotalMemory например. Больше ничего, к сожалению, сказать не могу. ![]() -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
NET_or_not_NET |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: нет Всего: 1 |
tol05, спаисбо!
буду пробывать через GC класс..... |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |