阅读:1173回复:2
斑竹请进: 如何用WIN32接口与过滤层驱动(设备)通信
我写了一个MOUSECLASS设备与SERIAL串口设备之间的一个过滤层驱动,先需要一USER MODE程序与过滤层驱动通信,现在采用IOCTL方式,但成功CREATEFILE后,DeviceIoControl总是返回1,在过滤驱动的IRP_MJ_DEVICE_CONTROL处理中,没有发现被调用到.我可以确认IOCTL的定义方面都没有问题,是否过滤驱动不支持DeviceIoControl调用方式,还是与我创建的设备类型有关系.
status = IoCreateDevice(Driver, sizeof(DEVICE_EXTENSION), NULL, // no name for this Filter DO FILE_DEVICE_SERIAL_MOUSE_PORT, 0, FALSE, &device); #define IOCTL_TOUCH_CALI_START CTL_CODE( FILE_DEVICE_SERIAL_MOUSE_PORT, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS) |
|
沙发#
发布于:2004-10-01 22:28
首先强调一点:过滤驱动一定可以支持DeviceIoControl调用方式的。在你创建设备的时候,给设备一个名字,再创建一个SymbolicLink名字就可以了。如果你实在不愿意这样,可以看看SetupDi API的文档。
|
|
板凳#
发布于:2004-10-02 12:16
真是苦啊!
我通过IoCreateSymbolicLink建立了一个"\\DosDevices\\<symbolicName>"WIN32可见的设备名,成功打开设备后,我去WRITEFILE时错误,提示功能错误.DEVICEIOCTL也错误,同样提示功能错误.另外,在CREATEFILE时,加上GENERIC_READ就打不开. 同时调试发现WRITEFILE,DEVICEIOCTL根本就没有进入DRIVER里. 为什么会这样啊!各位,帮帮忙. status = IoCreateDevice(Driver, sizeof(DEVICE_EXTENSION), &DeviceName,//NULL, // no name for this Filter DO FILE_DEVICE_SERIAL_MOUSE_PORT, FILE_DEVICE_SECURE_OPEN ,//0, FALSE, &device); if (!NT_SUCCESS(status)) { DebugPrintMsg("SerialMouseAddDevice: IoCreateDevice fail"); return status; } deviceExtension = (PDEVICE_EXTENSION) device->DeviceExtension; Print(deviceExtension, DBG_PNP_TRACE, ("enter Add Device\n")); // // Initialize the fields. // RtlZeroMemory(deviceExtension, sizeof(DEVICE_EXTENSION)); DebugPrint("Symbolic: %T",&SymLinkName ); DebugPrint("DeviceName: %T",&DeviceName ); status = IoCreateSymbolicLink (&SymLinkName, &DeviceName); if (!NT_SUCCESS(status)) { IoDeleteDevice(device); return status; } //-------------------------zb add-------------------------------------------- // Register and enable our device interface status = IoRegisterDeviceInterface(PDO, &Touch_GUID, NULL, &deviceExtension->ifSymLinkName); if( !NT_SUCCESS(status)) { IoDeleteDevice(device); return status; } IoSetDeviceInterfaceState(&deviceExtension->ifSymLinkName, TRUE); DebugPrint("Symbolic Link Name is %T",&deviceExtension->ifSymLinkName ); |
|