![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Остановка драйвера [D7, Win2k, WinXP]
samael6 © (2006-11-27 17:04:00)Здраствуйте,
Такая проблема: написал драйвер и программу управления им. Все работает, кроме одного - процедуры остановки драйвера.
Для управления драйвером использую SCM манагер.
Сам по себе драйвер работает и отлично контроллируется такими програмами как OSLoader.
Мой же остановщик проходит нормально, но драйвер не останавливается и не выгружается, а просто перестает отвечать на команды (Получаю сообщение: Драйвер не может сейчас принимать команды...).
Вот код остановщика:
function TForm1.StopDriver: Boolean;
var
schService,
schSCManager: DWORD;
p: PChar;
ss: _SERVICE_STATUS;
begin
Result:=False;
p := nil;
schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if schSCManager = 0 then RaiseLastWin32Error;
try
schService := OpenService(schSCManager, 'Avallonis', SERVICE_ALL_ACCESS);
if schService = 0 then RaiseLastWin32Error;
try
if not ControlService(schService, SERVICE_CONTROL_STOP, SS) then
RaiseLastWin32Error;
finally
CloseServiceHandle(schService);
end;
finally
CloseServiceHandle(schSCManager);
end;
Result:=True;
end;
Заранее всех благодарю.
Samael6 (2006-11-27 19:08:00) [1]
> Eraser
В том-то и дело, что можно! OSLoader, как я уже говорил, все это делает без проблем...
Eraser (2006-11-27 19:06:00) [2]на сколько мне известно, "драйвер в стиле NT" выгрузить без перезагрузки нельзя.. хотя возможно ошибаюсь.
Samael6 (2006-11-27 18:45:00) [3]И еще одно, может это поможет.
У меня драйвер "В стиле NT", не WDM!
Как показал поиск ntUnloadDriver, он применяется для WDM.
Или это не важно?
Samael6 (2006-11-27 18:44:00) [4]Игорь, я использовал методы, которые описываются в статьях по написанию драйверов.
SCM используется во всех из них, Вы не могли бы подсказать, где можно узнать о предлогаемом Вами?
Игорь Шевченко (2006-11-27 17:32:00) [5]Вообще-то для выгрузки рекомендуется использовать NtUnloadDriver