阅读:1426回复:1
菜鸟请教问题
我写了如下驱动:
VOID MySysUnload(IN PDRIVER_OBJECT pDrvObj ) { PDEVICE_OBJECT pDevObj; PDEVICE_EXTENSION pExt; pDevObj=pDrvObj->DeviceObject; if(pDevObj!=NULL) { pExt=(PDEVICE_EXTENSION)pDevObj->DeviceExtension; IoDeleteSymbolicLink(&pExt->userDevName); IoDeleteDevice(pDevObj); } } NTSTATUS MySysCreate(IN PDEVICE_OBJECT pDevObj,IN PIRP pIrp) { pIrp->IoStatus.Status=STATUS_SUCCESS; pIrp->IoStatus.Information=0; IoCompleteRequest(pIrp,IO_NO_INCREMENT); return STATUS_SUCCESS; } NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDrvObj,IN PUNICODE_STRING pUnicodeString) { NTSTATUS ntStatus; PDEVICE_OBJECT guiDevice; WCHAR deviceNameBuffer[] = L"\\Device\\DemoMyDriver"; UNICODE_STRING deviceNameUnicodeString; WCHAR deviceLinkBuffer[] = L"\\DosDevices\\DemoMyDriver"; UNICODE_STRING deviceLinkUnicodeString; PDEVICE_EXTENSION pExt; RtlInitUnicodeString(&deviceNameUnicodeString,deviceNameBuffer); ntStatus=IoCreateDevice(pDrvObj, sizeof(DEVICE_EXTENSION), &deviceNameUnicodeString, FILE_DEVICE_FILE_SYSTEM ,FILE_DEVICE_SECURE_OPEN, FALSE, &guiDevice); if(!NT_SUCCESS(ntStatus)) { IoDeleteDevice(guiDevice); return ntStatus; } pExt=guiDevice->DeviceExtension; RtlInitUnicodeString (&deviceLinkUnicodeString,deviceLinkBuffer ); ntStatus = IoCreateSymbolicLink (&deviceLinkUnicodeString,&deviceNameUnicodeString); if(!NT_SUCCESS(ntStatus)) { IoDeleteDevice(guiDevice); return ntStatus; } pExt->userDevName=deviceLinkUnicodeString; pDrvObj->MajorFunction[IRP_MJ_CREATE]=MySysCreate; pDrvObj->DriverUnload=MySysUnload; return STATUS_SUCCESS; } 然后编写了一个应用程序,在程序中调用createservice( ),startservice( )等函数创建该驱动 schService = CreateService( scManager,"MyDriverSys","MyDriverSys", SERVICE_ALL_ACCESS|SC_MANAGER_CREATE_SERVICE , // desired access SERVICE_KERNEL_DRIVER, // service type SERVICE_DEMAND_START, // start type SERVICE_ERROR_NORMAL, // error control type "D:\\MyDriver\\MyDriver.sys", // service's binary NULL, // no load ordering group NULL, // no tag identifier NULL, // no dependencies NULL, // LocalSystem account NULL // no password ); 运行之后能在设备管理器中看的名为"MyDriver"的设备,但就是不能用createFile( )函数打开该驱动,参数为“DemoMyDriver”和“MyDriverSys”我都试过,返回值都是无效句柄 恳请大虾赐教! |
|
沙发#
发布于:2008-01-04 03:39
try "\\\\.\\DemoMyDriver"
|
|