当前位置: 代码迷 >> 驱动开发 >> 鼠标过滤驱动,该如何解决
  详细解决方案

鼠标过滤驱动,该如何解决

热度:100   发布时间:2016-04-28 10:31:02.0
鼠标过滤驱动
我想写一个鼠标的过滤驱动,我的\Driver\mouclass下有四个设置,我刚开始想测试一下,所以所有的dispatch只是简单的把irp下发,中间显示一条debug信息,我用monitor把驱动挂上去后,只检测到一条IRP_MJ_CLOSE的irp流,根本检测不到IRP_MJ_READ流,但我把他挂到keyboard上的时候可以检测到IRP_MJ_READ流,驱动程序应该没问题,难道是鼠标的数据流不是通过IRP_MJ_READ流走的?
求大神出招~~
过滤驱动 IRP流 鼠标

------解决方案--------------------
引用:
引用:PNP设备,AddDevice例程调过时会传递一个PhysicalDeviceObject,你只要绑定它就行了(因为你在鼠标类的UpperFilter键下添加了你的驱动,自然会传递Mouclass生成的设备)。
 AddDevice例程可能不只被调用一次,你全绑定即可。你测试的时候不要对自己的设备定义设备名,(如果需……

NT式的方法,不用AddDevice,在DriverEntry中绑定设备,调用未公开的API  ObReferencedObjectByName找到mouclass,直接绑定就可以了。至于你说的绑定设备2和3后系统崩溃,,,,,这要看你对IRP的处理了。
------解决方案--------------------
extern POBJECT_TYPE *IoDriverObjectType; 
NTSTATUS ObReferenceObjectByName(  
        IN PUNICODE_STRING ObjectName,  
        IN ULONG Attributes,  
        IN PACCESS_STATE AccessState,  
        IN ACCESS_MASK DesiredAccess,  
        IN POBJECT_TYPE ObjectType,  
        IN KPROCESSOR_MODE AccessMode,  
        IN PVOID ParseContext,  
        OUT PVOID *Object  
        );  
VOID Attach(  
        IN PDRIVER_OBJECT DriverObject  
        )
{  
    NTSTATUS status;  
    PDRIVER_OBJECT targetDriverObject;  
    PDEVICE_OBJECT curDeviceObject;  
    PDEVICE_OBJECT lowerDeviceObject;  
    PDEVICE_OBJECT filterDeviceObject;  
    UNICODE_STRING kbdClassName;  
    KdPrint(("Attach invoke\n"));  
    RtlInitUnicodeString(&kbdClassName, L"\\Driver\\mouclass");  
    status = ObReferenceObjectByName(&kbdClassName, OBJ_CASE_INSENSITIVE, NULL, 0,   
            *IoDriverObjectType, KernelMode, NULL, &targetDriverObject);  
    if (!NT_SUCCESS(status)) {  
        KdPrint(("ObReferenceObjectByName failed\n"));  
        KdPrint(("status %08x\n", status));  
        return ;  
    }  
    ObDereferenceObject(targetDriverObject);  
    curDeviceObject = targetDriverObject->DeviceObject;  
    while (curDeviceObject != NULL) {  
        status = IoCreateDevice(DriverObject, sizeof(FILTER_EXT), NULL, curDeviceObject->DeviceType,   
  相关解决方案