динамическая загрузка драйвера в w2k

From
Anatoly Skoblov (2:5030/78)
To
Kirill Neznamov ()
Date
2001-12-15T12:20:31Z
Area
SU.WINDOWS.NT.PROG
Hello Kirill!

15 Dec 10 02:28, you wrote to All:

 KN> Можно ли загрузить мой драйвер из user mode программы динамически?
 KN> С vxd такое проходит.Неужели надо обязательно создовать inf файл и
 KN> перезагружать машину? Ведь portmon от sysinternals как то загружает
 KN> свой драйвер который содержиться в portmon.exe.Kак это можно сделать?

=== Cut ===
   if( WindowsNT ) {
hScManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
      hService = CreateService(hScManager, "DRVSERVICENAME", "Description",
                     SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
                     drvpath, NULL, NULL, NULL, NULL, NULL);
      if( !hService ) {
         if( GetLastError() != ERROR_SERVICE_EXISTS ) goto _end;
         hService = OpenService(hScManager, "DRVSERVIECNAME", SERVICE_ALL_ACCESS);
         if( !hService ) goto _end;
      }
      if( !StartService(hService, 0, NULL) && GetLastError() != ERROR_SERVICE_ALREADY_RUNNING ) goto _end;
      hDrv = CreateFile("\\\\.\\VFOSSIL", 0,0,0, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE | FILE_FLAG_OVERLAPPED, 0);
   }
   else {
      dwTemp = GetShortPathName(drvpath, buff, sizeof(buff));
      strcpy(filename, "\\\\.\\");
      if( dwTemp && dwTemp < sizeof(buff) ) strcat(filename, buff);
      else strcat(filename, ProgramPath);
      hDrv = CreateFile(filename, 0,0,0, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE | FILE_FLAG_OVERLAPPED, 0);
   }

=== Cut ===

Ну и не забудь в конце сказать драйверу STOP и удалить его.

Anatoly

---
 * Origin: www.aboutphone.info - АТС Петербурга,литература,фрикинг (2:5030/78)