Здравствуйте.
Есть программа на С++ (Application), есть драйвер, есть исходники.
Код не привожу — много. Если бы просто не работало то и бог с ним,
но работает через раз потому мож кто знает раскажет.
Application запускается без ошибок, если просто
переписать файлы *.sys в папку Drivers. То, что переписал с С++ на Delphi я
работает только один раз.
Потом функция QueryServiceStatus для драйвера возвращает SERVICE_STOPPED,
StartService — false, GetLastError — ERROR_BAD_DRIVER.
После этого Application тоже запускается с ошибкой — не может загрузить драйвер.
Если заново записать в реестр информацию, которая был с драйвером
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcipflt]
"Type"=dword:00000001
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,72,\
00,69,00,76,00,65,00,72,00,73,00,5c,00,74,00,63,00,69,00,70,00,66,00,6c,00,\
74,00,2e,00,73,00,79,00,73,00,00,00
"DisplayName"="tcipflt"
"Group"="TDI"
то Application работает всегда.
Моя программа работает только одни раз и только сразу после записи в реестр.
Если до этого один раз запустить Application, моя программа уже не работает.
При запущенном Application моя программа запускается без ошибок — и там и там
проверяется если драйвер запущен просто его используем.
После запуска Application ветка, где была информация драйвера
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcipflt]
исчезает. После запуска моей программы тоже, но не всегда.
Если я просто что-то не понимаю, то что?