динамическая загрузка драйвера в 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)