динамическая загрузка драйвера
- From
- Kirill Neznamov (2:5025/32.88)
- To
- All
- Date
- 2002-01-08T15:36Z
- Area
- SU.WINDOWS.NT.PROG
Доброе время суток All!
Kак-то раз я здесь спрашивал про subj.Меня просветили я вроде все понял и
написал прогу для тестирования драйвера(см ниже).Так вот возникла одна
проблемка - что надо и где написать в реестре чтобы usermode приложение
могло открыть мой драйвер по CreateFile()? Так как здесь что-то не работает..
После CreateFile() GetLastError() возвращает ERROR_INVALID_FUNCTION.Где
предположительно могут быть грабли?
#include <windows.h>
#include <winsvc.h>
#include <winbase.h>
#include "drvioctl.h"
#include <memory.h>
#define SNIFF_TYPE 40000
// The IOCTL function codes from 0x800 to 0xFFF are for customer use.
#define IOCTL_SNIFF_MAPUSERMEM \
CTL_CODE( SNIFF_TYPE, 0x900, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define IOCTL_SNIFF_UNMAPUSERMEM \
CTL_CODE( SNIFF_TYPE, 0x901, METHOD_BUFFERED, FILE_ANY_ACCESS )
void main(void)
{
SC_HANDLE hSCManager;
SC_HANDLE hService;
SERVICE_STATUS ServiceStatus;
BOOL flag;
DWORD err;
DWORD *mem;
HANDLE hdrv;
TCHAR completeDeviceName[64];
wsprintf( completeDeviceName, TEXT("\\\\.\\%s"), "sniffdrv");
hSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
hService = CreateService( hSCManager,
"sniffdrv",
"sniffdrv",
SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL,
"c:\\winnt\\system32\\drivers\\sniffdrv.sys",
NULL,
NULL,NULL,NULL,NULL);
if(!hService)
hService=OpenService(hSCManager,"SNIFFDRV",SERVICE_ALL_ACCESS);
flag=StartService( hService, 0, NULL );
hdrv=CreateFile(completeDeviceName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
err=GetLastError();
ControlService(hService,SERVICE_CONTROL_STOP,&ServiceStatus);
CloseServiceHandle( hService );
CloseServiceHandle( hSCManager );
}
С наилучшими пожеланиями,
KiR [Team BuZZ] [Team GoA ]
--- TM-Ed 1.14+
* Origin: Кто не хочет - ищет причину,кто хочет - ищет возможность. Goa_Dream_Station (2:5025/32.88)