dd_action('wp_footer', function() { ?>
Практические инструкции: что делать, если что-то сломалось дома. Только причины и реальные решения.
Process Monitor (ProcMon) — это профессиональный инструмент Microsoft Sysinternals для наблюдения за действиями программ в реальном времени.
В отличие от Dependency Walker и Dependencies, которые показывают теоретические зависимости EXE, ProcMon показывает:
что Windows реально делает во время запуска игры.
Схема работы:
Запуск игры
↓
Windows ищет файлы
↓
ProcMon записывает действия
↓
Видим отсутствующую DLL
↓
Исправляем причинуProcMon особенно полезен, когда:
| Dependencies | ProcMon | |
|---|---|---|
| Анализ EXE | ||
| Импорт DLL | ||
| Реальный запуск | ||
| Поиск файлов | ||
| Динамические DLL | ограниченно | |
| Ошибки путей | ||
| Проверка игры в работе |
Правильное использование:
Dependencies
↓
понять API игры
↓
ProcMon
↓
увидеть реальную ошибкуProcMon входит в пакет:
Microsoft Sysinternals SuiteФайл:
Procmon.exeОсобенности:
При запуске программа начинает записывать:
Сразу после запуска:
лучше остановить запись:
Ctrl + EИ очистить старые события:
Ctrl + XПеред запуском нужно настроить фильтр.
Открыть:
Filter
↓
Filter...Добавить:
Process Name
is
Game.exe
IncludeТеперь ProcMon будет показывать только игру.
Пример:
RedAlert2.exeили:
game.exeПорядок:
1. Очистить журнал
↓
2. Включить запись
↓
3. Запустить игру
↓
4. Дождаться ошибки
↓
5. Остановить записьКлавиши:
Запись:
Ctrl + EОчистка:
Ctrl + XСамый важный результат.
Пример:
Game.exe
QueryOpen
xinput1_3.dll
NAME NOT FOUNDЭто означает:
игра искала:
xinput1_3.dllно Windows не нашла файл.
Решение:
установить:
ProcMon показывает последовательность:
Game Folder
↓
System32
↓
SysWOW64
↓
Windows DirectoryПример:
C:\Games\OldGame\xinput1_3.dll
NAME NOT FOUND
C:\Windows\System32\xinput1_3.dll
NAME NOT FOUNDВывод:
DLL отсутствует.
Другой тип ошибки.
Пример:
C:\Game\Data
PATH NOT FOUNDПричины:
Использовать фильтр:
Path
contains
.dllМожно искать:
ddraw.dllили:
mss32.dllСтарая игра:
Game.exeProcMon:
QueryOpen
ddraw.dll
NAME NOT FOUNDВывод:
игра использует:
DirectDrawРешение:
проверить:
ProcMon:
mss32.dll
NAME NOT FOUNDВывод:
игра использует:
Miles Sound SystemРешение:
найти оригинальную библиотеку игры.
Не помогает:
установка DirectX.
ProcMon:
xinput1_3.dll
NAME NOT FOUNDВывод:
игре нужен:
XInputРешение:
установка:
DirectX End-User RuntimeОчень важный случай.
Некоторые игры не имеют DLL в импорте.
Они делают:
LoadLibrary("xxx.dll")Dependencies может не показать.
ProcMon покажет:
Load Image
xxx.dll
NAME NOT FOUNDProcMon отлично показывает:
какая DLL реально используется.
Например:
В папке игры:
ddraw.dllЗапуск:
Load Image
C:\Game\ddraw.dllВывод:
используется локальная DLL.
Можно проверить:
Основные события:
| Событие | Значение |
|---|---|
| CreateFile | открытие файла |
| QueryOpen | поиск файла |
| Load Image | загрузка DLL |
| NAME NOT FOUND | файл не найден |
| PATH NOT FOUND | путь отсутствует |
| ACCESS DENIED | нет доступа |
Пример:
game.dll
ACCESS DENIEDПричины:
Решения:
1. Открыть ProcMon
↓
2. Очистить журнал
↓
3. Создать фильтр Game.exe
↓
4. Запустить игру
↓
5. Дождаться ошибки
↓
6. Остановить запись
↓
7. Найти NAME NOT FOUND
↓
8. Определить DLL
↓
9. Установить правильный компонентЕсли не включить фильтр:
ProcMon покажет:
Например:
font.dll NAME NOT FOUNDЭто может быть не причиной падения.
Нужно искать:
Нельзя:
скачал dll с сайта
↓
положил в System32Правильно:
определить:
| Что найдено | Значение |
|---|---|
| ddraw.dll NAME NOT FOUND | DirectDraw проблема |
| dsound.dll NAME NOT FOUND | звук DirectSound |
| mss32.dll NAME NOT FOUND | Miles Sound |
| xinput1_3.dll NAME NOT FOUND | XInput |
| MSVCP*.dll | Visual C++ |
| d3dx*.dll | DirectX Runtime |
| ACCESS DENIED | права/защита |
| PATH NOT FOUND | отсутствует путь |
Process Monitor — главный инструмент для ответа на вопрос: «Что игра реально ищет при запуске?»
Использовать:
когда игра молча закрывается;
когда неизвестно, какой DLL не хватает;
когда библиотека загружается динамически;
когда нужно проверить wrapper DLL.
Главная схема:
Игра
↓
Process Monitor
↓
NAME NOT FOUND
↓
Отсутствующая DLL
↓
Правильный компонент
↓
Запуск игры