Форум HeroesWorld-а - Показать сообщение отдельно - [ПРОБЛЕМА] Heroes3 на двухядерном процессоре
Показать сообщение отдельно
#15
Старый 07.11.2007, 01:55
  #15
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

И добавлю пару слов насчёт ошибок в программе:
1) Переменная Hook в функции CallNextHookEx скорее всего некорректна (неопределена). Не думаю, что это критическая ошибка.
2) Новая функция, замещающая IsIconic, нереентерабельна, т.е. если в два потока начать её дёргать - будет плохо (но Герои III так не сделают). Для других программ нужно что-то придумать с синхронизацией (используя, например, InterlockedExchange).
3) Используемый метод инжекта также неидеален - для Героев можно было бы сделать запускалку (и не надо было бы извращаться с DLL-ками и хуками). Но тогда программа будет неуниверсальной и её нельзя будет доработать, чтобы, скажем, она запускала Starcraft (т.к. тот запускается лоадером).
4) Отсутствие комментариев говорит само за себя. Впрочем, если кто что спросит - я отвечу (если не исчезну с форума).
5) Скорость работы можно было бы увеличить, если вместо ReadProcessMemory и WriteProcessMemory использовать чтение и запись памяти "напрямую", предварительно открыв доступ с помощью VirtualProtect.
6) Открытие процесса с правами PROCESS_ALL_ACCESS - тоже косяк, оно не всегда работать будет, если пользователь в правах ограничен.
7) Даже боюсь себе представить, как оно будет работать под Windows Vista Впрочем, наверное, это проблемы Microsoft и того перца, который сидит на Vista.
ezhfan вне форума
Ответить с цитированием