之前在论坛看见一个代码是虚拟鼠标 BackInC 然后自己调试了一下发现蓝屏了 看了代码少了一句KeLowerIrql(oldKirql); 看来大牛也有马虎的时候 。 现在问题是我想在虚拟桌面实现鼠标动作而又不影响真实用户 MOUSE_INPUT_DATA 可以实现吗?
希望各路大牛指点一下 谢谢谢谢啦!~
typedef VOID
(_stdcall *Mou_ServiceCallback)(
IN PDEVICE_OBJECT DeviceObject,
IN PMOUSE_INPUT_DATA InputDataStart,
IN PMOUSE_INPUT_DATA InputDataEnd,
IN OUT PULONG InputDataConsumed
);
typedef struct _MOU_CALLBACK
{
PDEVICE_OBJECT classDeviceObject;
Mou_ServiceCallback serviceCallBack;
bool bSearch;
}MOU_CALLBACK,*PMOU_CALLBACK;
MOU_CALLBACK g_MouCallBack={0};
KIRQL oldKirql;
KeRaiseIrql(DISPATCH_LEVEL,&oldKirql);
MOUSE_INPUT_DATA InputData[2]={0};
ULONG InputDataConsumed=0;
//InputData[0].UnitId=0xFE;
InputData[0].UnitId=0xFE;
//MOUSE_VIRTUAL_DESKTOP说是映射到虚拟桌面 为什么没有体现呢?
InputData[0].Flags=1|MOUSE_VIRTUAL_DESKTOP;
InputData[0].ButtonFlags=wBtnFlags;
InputData[0].ButtonData=wBtnData;
InputData[0].RawButtons=0;
InputData[0].LastX=dwLastX;
InputData[0].LastY=dwLastY;
InputData[0].ExtraInformation=0;
g_MouCallBack.serviceCallBack(g_MouCallBack.classDeviceObject,&InputData[0],&InputData[1],&InputDataConsumed);
KeLowerIrql(oldKirql);
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课