taxion Это не "тени" процессов, а разные способы показа реальности
- программа от M$ действует по принципу:
"Если пользователь сказал завершить процесс, то он уже сохранил обрабатываемые данные и процесс можно завершить аварийно!" и использует вызов TerminateProcess() который аварийно завершает всё его дерево вместе с дочерними процессами без сохранения данных, а РН если мы нажимаем в дереве DEL реализует функцию ExitProcess() которая даёт время процессу сохранить данные. При это те процессы код возврата которых равен 1 (success) ни системный Task Manager ни Process Explorer в списке запущенных в упор не видят даже если он ещё находится в памяти, а РН показывает их реальное состояние. Отсюда и "зомби" - это ушедшие в фоновый режим, но ещё не завершившие до конца сохранение данных процессы.
Аварийное завершение функцией TerminateProcess() используется только если процесс не отвечает на системные сигналы. И одной из особенностей системного Task Manager и Process Explorer является установка кода возврата для любого завершённого ими процесса в 1 (success), что часто не позволяет процессу winlogon перезапустить аварийно завершённый процесс explorer поскольку он это сделает только если его код возврата не будет равен 1.
Skif_off ItsJustMe И должно падать ибо в таком случае берётся первая попавшаяся в процессе поиска DLL, а есть ли в ней нужные функции или нет пока её не позвали проверить нельзя. Не соблюдение правил поиска DLL описанных в
MSDN и вынуждено прибитых в шапку априори подразумевает создание условий для возникновение ошибок. Как с ними бороться так же прописано в шапке и на
странице 57.
И я думаю что стоит прекратить эксперименты с dngjrlp.dll от Windows XP/2003 ибо о том что они бесполезны я уже не раз говорил. В dnghelp.dll из OS Win XP/2003 импортируемые вызовы используют экспорты из DrWtsn который остался практически неизменным ещё со времён Windows 3.0 где он появился, а начиная с Vista/2008 её постепенно переориентировали на использование Debugger Engine API что позволяет использовать оптимальный отладчик для каждой задачи и DrWtsn в итоге из системы просто по тихому выкинули за ненужностью.