Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Если сервис фактически зависит от NDIS и специализированного драйвера — почему эти зависимости не указаны явно? Как иначе система догадается, что с запуском сервиса нужно подождать, пока не будет активирована подсистема NDIS и загружен специализированный драйвер?
Я пробовал, но это не дает результатов. Система NDIS имее свою группу => она (эта группа) загружается раньше всех сервисов, которые не входят ни в какую группу. Специализированный драйвер явно зависит от NDIS, это прописано, его тип запуска — авто. Я ставил зависимость от драйвера, тоже не помогает. После загрузки специализированный драйвер запущен, мой сервис вообще молчит. Тут же запускаю его вручную (net start xmysrv) и все работает...
B>>Каким образом можно оттрассировать процесс запуска сервиса при загрузке и узнать причину подобного поведения?
ЕМ>Обеспечив отладочный вывод (OutputDebugString) и просматривая его любым системным отладчиком (WinDbg, SoftICE) или же утилитой DebugView (sysinternals). Или хоть в файл лог писать.
Насколько я понимаю отладочный вывод надо обеспечивать в коде сервиса, а как же я его обеспечу, если сервис (допустим) вылетает на первой строчке кода.
Необходим метод, который бы перехватил управление процессом, который создает SCM для запуска сервиса.
ЕМ>То, что система будет ждать 30 секунд, отнюдь не мешает ей продолжать запускать все остальные сервисы. Это весьма асинхронный процесс, причем в XP он гораздо более асинхронный, чем в 2k, отчего многие не совсем правильные драйверы/сервисы под XP потребовали доработки
А все-таки, как будет вести сетя система, если сервис при автозапуске вылетает на первой строчке кода... Неужели тупо ждать пока хендлер пошлет SERVICE_START_PENDING...