阅读:1961回复:0
虚拟鼠标驱动请教
我现在驱动已经可以挂载,而且AP可以和它通信,可以发ioctl给它。但是构造的MOUSE_INPUT_DATA 似乎不对,因为结果没有反映啊。
我的代码如下,各位高人帮帮小弟啊。上面的是模拟右键按下,下面的是模拟右键按上。但是似乎没有反映。 case IOCTL_REGISTER_EVENT: if (outputBufferLength < sizeof(long)) { Status = STATUS_INVALID_BUFFER_SIZE; break; } hEvent = *(long*) Irp->AssociatedIrp.SystemBuffer; if(hEvent==1) { ULONG NumSend = 0; int i; MOUSE_INPUT_DATA Data[6]; RtlZeroMemory(Data, sizeof(Data)); for(i =0 ; i< 6 ; ++i) { Data.Flags = MOUSE_MOVE_ABSOLUTE; Data.RawButtons = MOUSE_BUTTON_1; Data.ButtonFlags = MOUSE_BUTTON_1_DOWN; Data.UnitId = g_UnitId ; Data.LastX = 0; Data.LastY = 0; } g_SeviceCallback(g_KeyboardClassDO, Data, &Data[1], &NumSend); Status = STATUS_SUCCESS; pversion = (PULONG) Irp->AssociatedIrp.SystemBuffer; *pversion = iTmp; } break; case IOCTL_UNREGISTER_EVENT: if (outputBufferLength < sizeof(long)) { Status = STATUS_INVALID_BUFFER_SIZE; break; } hEvent = *(long*) Irp->AssociatedIrp.SystemBuffer; if(hEvent==1) { ULONG NumSend = 0; int i; MOUSE_INPUT_DATA Data[6]; RtlZeroMemory(Data, sizeof(Data)); for(i =0 ; i< 6 ; ++i) { Data.Flags = MOUSE_MOVE_ABSOLUTE; Data.RawButtons = MOUSE_BUTTON_1; Data.ButtonFlags = MOUSE_BUTTON_1_UP; Data.UnitId = g_UnitId ; Data.LastX = 0; Data.LastY = 0; } g_SeviceCallback(g_KeyboardClassDO, Data, &Data[1], &NumSend); pversion = (PULONG) Irp->AssociatedIrp.SystemBuffer; *pversion = iTmp; } break; |
|