Помогите победить драйвер
От: uka  
Дата: 05.05.04 12:29
Оценка:
Здравствуйте.

Есть программа на С++ (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]
исчезает. После запуска моей программы тоже, но не всегда.

Если я просто что-то не понимаю, то что?
Re: Помогите победить драйвер
От: Аноним  
Дата: 05.05.04 12:52
Оценка:
Если хочешь, сброшу библиотеку для работы с драйверами (загрузка и выгрузка).
Re: Помогите победить драйвер
От: glyph  
Дата: 05.05.04 15:56
Оценка:
Здравствуйте, uka, Вы писали:
uka>Application запускается без ошибок, если просто
uka>переписать файлы *.sys в папку Drivers. То, что переписал с С++ на Delphi я
uka>работает только один раз.
Так не покатит. Драйвер надо устанавливать, для этого нужен его *.inf.
uka>Потом функция QueryServiceStatus для драйвера возвращает SERVICE_STOPPED,
uka>StartService — false, GetLastError — ERROR_BAD_DRIVER.
Нету драйвера.
uka>После этого Application тоже запускается с ошибкой — не может загрузить драйвер.
uka>Если заново записать в реестр информацию, которая был с драйвером
uka>При запущенном Application моя программа запускается без ошибок — и там и там
uka>проверяется если драйвер запущен просто его используем.
uka>После запуска Application ветка, где была информация драйвера
uka>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcipflt]
uka>исчезает. После запуска моей программы тоже, но не всегда.
В эту часть реестра пишет ОС. Никто не гарантирует сохранности записанной туда руками информации.
uka>Если я просто что-то не понимаю, то что?
Посоветую статьи FourF с wasm.ru — цикл из 11ти статей, в одной из первых рассказывается про создание inf и установку драйвера. Еще — Walter Oney, есть в сети в е-виде.
Re[2]: Помогите победить драйвер
От: uka  
Дата: 06.05.04 04:45
Оценка:
Буду очень благодарен.
uka@rambler.ru
Re[3]: Помогите победить драйвер
От: z.s.s Россия  
Дата: 06.05.04 05:39
Оценка:
Здравствуйте, uka, Вы писали:

uka>Буду очень благодарен.

uka>uka@rambler.ru

Сбросил по почте файл, в котором dll для загрузки и выгрузки драйвера.

Функции:

SC_HANDLE WINAPI DriverLoad(LPCTSTR pPath, DWORD StartType)


Загружает драйвер. pPath — путь к драйверу, StartType — тип загрузки (boot, auto ...). Возвращает хэндл, через который можно управлять драйвером через IOCTL (если просто надо загрузить — то он не нужен)

BOOL WINAPI DriverUnload(LPCTSTR pPath, SC_HANDLE hDevice)


Выгружает драйвер. pPath — путь к драйверу. hDevice — тот хэндел, который был получен при DriverLoad.

Если нужны исходники — то могу сбросить (можешь в них что-нибудь изменить )
... И будет Вам счастье !!! ...
Re[4]: Если не жалко то можно и исходники
От: uka  
Дата: 06.05.04 07:41
Оценка:
Сильно подозреваю что на С.
Я как раз с него и переписывал фиг чего у меня вышло, хотя где там можно в двух функция заблудится ...
Но может тут чего замечу.

А хэндл увы нужен, буду договариватся.
Re[5]: Если не жалко то можно и исходники
От: z.s.s Россия  
Дата: 06.05.04 08:27
Оценка:
Здравствуйте, uka, Вы писали:

uka>Сильно подозреваю что на С.


Именно на C

Сброси и исходники
... И будет Вам счастье !!! ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.