Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Установка и удаление Драйвера! Чет я запутался или что-то не то [D6, NT4, Win2k, WinXP]


NikNet ©   (2005-06-13 00:26:00) 

Вообщем что я не так сделал

Function InstallDrv(DriverName:string):String;
var
   hSCM, hSRV : THandle;
begin
   Result:='';
   hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
   IF hSCM = INVALID_HANDLE_VALUE  Then
   Result:='OpenSCManager '+#13#10;
   // ñîçäàíèå ñèñòåìíîé çàïèñè î äðàéâåðå
   hSRV := CreateService(
   hSCM,
   PChar(DriverName),
   PChar(DriverName),
   SERVICE_ALL_ACCESS,
   SERVICE_KERNEL_DRIVER,
   SERVICE_DEMAND_START,
   SERVICE_ERROR_NORMAL,
   PChar(ExtractFilePath(ParamStr(0))+DriverName),
   nil,
   nil,
   nil,
   nil,
   nil);
   IF hSRV = INVALID_HANDLE_VALUE THEN
   Result:=Result+'CreateService '+#13#10;
   // î÷èñòêà ðåñóðñîâ
   IF not CloseServiceHandle(hSRV) Then
   Result:=Result+'SRV: CloseServiceHandle'+#13#10;
   IF not CloseServiceHandle(hSCM) Then
   Result:=Result+'SCM: CloseServiceHandle'+#13#10;
   IF not StartService(hSrv,0,PChar(lpServiceArgVectors)) Then
   Result:=Result+'StartService'+#13#10;
end;

Function RemoveDrv(DriverName:string):String;
var
   hSCM, hSRV : THandle;
   Status     : TServiceStatus;
begin
  Result:='';
  hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  IF hSCM = INVALID_HANDLE_VALUE Then
  Result:=Result+'OpenSCManager '+#13#10;
  hSRV := OpenService(hSCM,PChar(DriverName), SERVICE_ALL_ACCESS);
  IF hSRV = INVALID_HANDLE_VALUE THEN
  Result:=Result+'OpenService'+#13#10;
  IF not ControlService(hSRV,SERVICE_CONTROL_STOP,Status) then
  Result:=Result+'ControlService'+#13#10;
  IF not DeleteService(hSrv) Then
  Result:=Result+'DeleteService'+#13#10;
  IF not CloseServiceHandle(hSRV) Then
  Result:=Result+'SRV: CloseServiceHandle'+#13#10;
  IF not CloseServiceHandle(hSCM) Then
  Result:=Result+'SCM: CloseServiceHandle'+#13#10;
end;


MS-MEN   (2005-06-13 20:44:00) [1]

IF ControlService(hSRV,SERVICE_CONTROL_STOP,Status) then
 Result:=Result+'ControlService'+#13#10;


Ученик   (2005-06-13 20:29:00) [2]

>Anatoly Podgoretsky ©   (13.06.05 20:25) [6]
Да, пожалуйста :-)

http://www.britishmint.com/money_stalk_of_bills100.jpg


Anatoly Podgoretsky   (2005-06-13 20:25:00) [3]

Ученик   (13.06.05 20:21) [5]
Два бакса.


Ученик   (2005-06-13 20:21:00) [4]

>NikNet ©   (13.06.05 20:17) [4]

Может текст ошибки все-таки сообщите :-)


NikNet   (2005-06-13 20:17:00) [5]

Я пробывал и так и сяк не чего :(


Ученик   (2005-06-13 19:53:00) [6]

>NikNet ©   (13.06.05 00:26)  
В любом случае, после команды Stop, необходимо дожидаться остановки драйвера (сервиса)


VMcL   (2005-06-13 10:18:00) [7]

> Что-то ControlService выводит Ошибку... (False)

И что по этому поводу говорит RaiseLastOSError?


NikNet   (2005-06-13 00:32:00) [8]

Во-общим ошибки при удаление!

Что-то ControlService выводит Ошибку... (False)


Наверх

Титульная страница Поиск, карта сайта Написать письмо