亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dispatch.cpp

?? 2009 最新測試成功的 Virtual Mouse 哈哈 !! 只有這裡才有喔
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/////////////////////////////////////////////////////////////////////////////
//	dispatch.cpp:	Other IRP handlers
/////////////////////////////////////////////////////////////////////////////
//	Create			Handle Create/Open file IRP
//	Close			Handle Close file IRPs
//	Read			Handle Read IRPs
//	Write			Handle Write IRPs
//	DeviceControl	Handle DeviceIoControl IRPs
//	SystemControl	Handle WMI IRPs
/////////////////////////////////////////////////////////////////////////////

#include "VKeyFdo.h"
#include "..\inc\vkIoctl.h"

#define _MOUSE_
#include <ntddmou.h>
/////////////////////////////////////////////////////////////////////////////
//	Create:
//
//	Description:
//		Handle IRP_MJ_CREATE requests
//
//	Arguments:
//		Pointer to our FDO
//		Pointer to the IRP
//			IrpStack->Parameters.Create.xxx has create parameters
//			IrpStack->FileObject->FileName has file name of device
//
//	Return Value:
//		This function returns STATUS_XXX

PDEVICE_OBJECT FunctionDevice  = 0;
PDEVICE_OBJECT KeyboardClassDO = 0;
int UnitId = 0;
//#ifdef _MOUSE_
MouseClassServiceCallback SeviceCallbackMouse = 0;
//#else
KeyboardClassServiceCallback SeviceCallback = 0;
//#endif

NTSTATUS Create(IN PDEVICE_OBJECT fdo,IN PIRP Irp)
{
	
#ifdef _MOUSE_
	if( (SeviceCallbackMouse == 0) || (0 == KeyboardClassDO) )
	{
		return CompleteIrp(Irp,STATUS_DEVICE_OFF_LINE,0);
	}	// Complete successfully

#else
	if( (SeviceCallback == 0) || (0 == KeyboardClassDO) )
	{
		return CompleteIrp(Irp,STATUS_DEVICE_OFF_LINE,0);
	}	// Complete successfully

#endif

	return CompleteIrp(Irp,STATUS_SUCCESS,0);
}

/////////////////////////////////////////////////////////////////////////////
//	Close:
//
//	Description:
//		Handle IRP_MJ_CLOSE requests
//
//	Arguments:
//		Pointer to our FDO
//		Pointer to the IRP
//
//	Return Value:
//		This function returns STATUS_XXX

NTSTATUS Close(IN PDEVICE_OBJECT fdo,IN PIRP Irp)
{
	// Complete successfully
	return CompleteIrp(Irp,STATUS_SUCCESS,0);
}

/////////////////////////////////////////////////////////////////////////////
//	DeviceControl:
//
//	Description:
//		Handle IRP_MJ_DEVICE_CONTROL requests
//
//	Arguments:
//		Pointer to our FDO
//		Pointer to the IRP
//			Buffered:	AssociatedIrp.SystemBuffer (and IrpStack->Parameters.DeviceIoControl.Type3InputBuffer)
//			Direct:		MdlAddress
//
//			IrpStack->Parameters.DeviceIoControl.InputBufferLength
//			IrpStack->Parameters.DeviceIoControl.OutputBufferLength 
//
//	Return Value:
//		This function returns STATUS_XXX

NTSTATUS DeviceControl(IN PDEVICE_OBJECT fdo,IN PIRP Irp)
{
	if(FunctionDevice != fdo)
	{
		PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);
		ULONG CtlCode = IrpStack->Parameters.DeviceIoControl.IoControlCode;
		DbgPrint("device io ctrl code = %x\n",CtlCode);

		PDEVICE_EXTENSION dx = (PDEVICE_EXTENSION)fdo->DeviceExtension;
		IoSkipCurrentIrpStackLocation(Irp);
		return IoCallDriver( dx->NextStackDevice, Irp);
	}

	PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);

	NTSTATUS status = STATUS_INVALID_DEVICE_REQUEST;
	ULONG BytesTxd = 0;

	ULONG ControlCode    = IrpStack->Parameters.DeviceIoControl.IoControlCode;
	PVK_SENDKEY ioBuffer = (PVK_SENDKEY)Irp->AssociatedIrp.SystemBuffer;
	ULONG InputLength    = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
	//ULONG OutputLength   = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;

	switch( ControlCode)
	{

#ifdef _MOUSE_

		case IOCTL_VHIDMOU_RIGHT_UP:
			// Send data to KeyboardClass
		{
	
		ULONG NumSend = 0;
		MYMOUSE_INPUT_DATA Data[6];
	   
        //Data.ButtonFlags=MOUSE_MOVE_RELATIVE;
        Data[0].ButtonFlags=MOUSE_RIGHT_BUTTON_UP;

        Data[0].Buttons=0x08;
		Data[0].ButtonData=0;
		Data[0].UnitId=0;
		Data[0].Flags=UnitId;
		Data[0].RawButtons=0;
        Data[0].ExtraInformation=0;
        Data[0].LastX=0;
        Data[0].LastY=0;


		SeviceCallbackMouse(KeyboardClassDO,Data,&Data[1],&NumSend);
		}
		break;
        case IOCTL_VHIDMOU_LEFT_UP:
			// Send data to KeyboardClass
		{
	
		ULONG NumSend = 0;
		MYMOUSE_INPUT_DATA Data[6];
	   
        //Data.ButtonFlags=MOUSE_MOVE_RELATIVE;
        Data[0].ButtonFlags=MOUSE_LEFT_BUTTON_UP;

        Data[0].Buttons=0x02;
		Data[0].ButtonData=0;
		Data[0].UnitId=0;
		Data[0].Flags=UnitId;
		Data[0].RawButtons=0;
        Data[0].ExtraInformation=0;
        Data[0].LastX=0;
        Data[0].LastY=0;


		SeviceCallbackMouse(KeyboardClassDO,Data,&Data[1],&NumSend);
		}
		break;

    case IOCTL_VHIDMOU_RIGHT_DOWN:
			// Send data to KeyboardClass
		{
	
		ULONG NumSend = 0;
		MYMOUSE_INPUT_DATA Data[6];
	   
        //Data.ButtonFlags=MOUSE_MOVE_RELATIVE;
        Data[0].ButtonFlags=MOUSE_RIGHT_BUTTON_DOWN;

        Data[0].Buttons=0x04;
		Data[0].ButtonData=0;
		Data[0].UnitId=0;
		Data[0].Flags=UnitId;
		Data[0].RawButtons=0;
        Data[0].ExtraInformation=0;
        Data[0].LastX=0;
        Data[0].LastY=0;


		SeviceCallbackMouse(KeyboardClassDO,Data,&Data[1],&NumSend);
		}
		break;
        case IOCTL_VHIDMOU_LEFT_DOWN:
			// Send data to KeyboardClass
		{
	
		ULONG NumSend = 0;
		MYMOUSE_INPUT_DATA Data[6];
	   
        //Data.ButtonFlags=MOUSE_MOVE_RELATIVE;
        Data[0].ButtonFlags=MOUSE_LEFT_BUTTON_DOWN;

        Data[0].Buttons=0x01;
		Data[0].ButtonData=0;
		Data[0].UnitId=0;
		Data[0].Flags=UnitId;
		Data[0].RawButtons=0;
        Data[0].ExtraInformation=0;
        Data[0].LastX=0;
        Data[0].LastY=0;


		SeviceCallbackMouse(KeyboardClassDO,Data,&Data[1],&NumSend);
		}
		break;

#endif	

    case IOCTL_VHIDMOU_CLICK:
	case IOCTL_SENDKEY:
			// Send data to KeyboardClass
		{
#ifdef _MOUSE_
	
		ULONG NumSend = 0;
		MYMOUSE_INPUT_DATA Data[6];
	   
        //Data.ButtonFlags=MOUSE_MOVE_RELATIVE;
        Data[0].ButtonFlags=MOUSE_RIGHT_BUTTON_DOWN;

        Data[0].Buttons=0x04;
		Data[0].ButtonData=0;
		Data[0].UnitId=0;
		Data[0].Flags=UnitId;
		Data[0].RawButtons=0;
        Data[0].ExtraInformation=0;
        Data[0].LastX=0;
        Data[0].LastY=0;


		SeviceCallbackMouse(KeyboardClassDO,Data,&Data[1],&NumSend);
	
#else
	   if( (ioBuffer==0) || (InputLength < sizeof(VK_SENDKEY)) || (ioBuffer->Count > 5) )
		{
			status = STATUS_INVALID_PARAMETER;
			break;
		}

		// Send data to KeyboardClass
		{
		ULONG NumSend = 0;
		MYKEYBOARD_INPUT_DATA Data[6];
		for(int i =0 ; i< ioBuffer->Count ; i++)
		{
			if( ioBuffer->Keys[i].Press == 0 )
			{
				Data[i].Flags = KEY_BREAK;
			}
			Data[i].UnitId   = UnitId ;
			Data[i].MakeCode = ioBuffer->Keys[i].Code;
		}

		SeviceCallback(KeyboardClassDO,Data,&Data[ioBuffer->Count],&NumSend);
		}

#endif
	

		status = STATUS_SUCCESS;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av中文在线观看| 久久久亚洲精品一区二区三区| www.综合网.com| 亚洲精品一区二区三区99| 精品成人佐山爱一区二区| 捆绑调教一区二区三区| 91在线精品一区二区| 久久综合一区二区| 婷婷一区二区三区| jvid福利写真一区二区三区| 国产精品你懂的在线欣赏| 秋霞成人午夜伦在线观看| 欧洲视频一区二区| 久久久国产精华| eeuss鲁片一区二区三区在线看| 国产精品人成在线观看免费| av不卡免费在线观看| 一区二区三区中文字幕电影| 国产a视频精品免费观看| 欧美一区二区三区免费在线看| 亚洲免费电影在线| 成人爽a毛片一区二区免费| 91麻豆精品国产| 欧美一区二区三区在线看| 一区二区三区免费看视频| 色婷婷激情综合| 欧美精品一区视频| 成人免费视频app| 亚洲成国产人片在线观看| 波多野结衣中文字幕一区二区三区| 久久综合久久99| 97久久精品人人爽人人爽蜜臀| 亚洲va韩国va欧美va精品| 香蕉影视欧美成人| 欧美成人a∨高清免费观看| 亚洲成在线观看| 国产日韩欧美精品在线| 国产乱码精品一区二区三区五月婷| 欧美精品丝袜久久久中文字幕| 一区二区三区在线播| 精品处破学生在线二十三| 欧洲国产伦久久久久久久| 国产尤物一区二区在线| 国产亚洲va综合人人澡精品| 国产精品亚洲专一区二区三区| 亚洲日穴在线视频| 色综合天天综合| 亚洲精品国产一区二区精华液 | www..com久久爱| 日本美女一区二区三区视频| 亚洲色欲色欲www| 日本一区二区三区电影| 日韩一区二区三区电影在线观看| 日本伊人精品一区二区三区观看方式| 亚洲欧洲日韩av| 欧美日韩一区久久| 免费高清在线视频一区·| 亚洲欧美日韩一区二区三区在线观看 | 国产日韩视频一区二区三区| 欧美日韩小视频| 一本一道久久a久久精品| 国产91清纯白嫩初高中在线观看| 91碰在线视频| 亚洲一区在线观看免费 | 欧美高清你懂得| 欧美中文字幕一区二区三区| 91女厕偷拍女厕偷拍高清| 国产盗摄视频一区二区三区| 亚洲欧美另类图片小说| 国产精品久久毛片av大全日韩| 色猫猫国产区一区二在线视频| 亚洲第一福利一区| 亚洲一区二区三区小说| 亚洲美女少妇撒尿| 亚洲精品中文字幕在线观看| 自拍av一区二区三区| 综合色中文字幕| 亚洲欧美日韩中文播放| 一区二区三区成人| 亚洲一区二区高清| 亚洲国产va精品久久久不卡综合| 久久久九九九九| 国产亚洲综合在线| 中文字幕国产精品一区二区| 在线播放日韩导航| 欧美一区二区三区在线看| 日韩一级精品视频在线观看| 欧美精品一区二区三区四区| 久久精品一区二区三区av| 国产色产综合色产在线视频| 中文字幕成人网| 亚洲女厕所小便bbb| 亚洲制服欧美中文字幕中文字幕| 亚洲成a人在线观看| 美女看a上一区| 亚洲www啪成人一区二区麻豆| 亚洲妇女屁股眼交7| 免费观看一级特黄欧美大片| 精品亚洲porn| 免费在线视频一区| 国产一区二区在线电影| 成人精品国产福利| 在线观看不卡一区| 日韩欧美一级二级三级| 欧美视频一区二| 日本高清不卡aⅴ免费网站| 欧美日韩不卡在线| 在线免费观看日韩欧美| 欧美电影一区二区| 国产视频一区二区在线| 亚洲影院理伦片| 精品影视av免费| 色综合中文字幕国产 | 欧美日韩在线播放三区四区| 日韩一二三四区| 中文字幕在线不卡一区二区三区| 亚洲无人区一区| 懂色av一区二区在线播放| 欧美三日本三级三级在线播放| 精品国精品国产| 亚洲一区二区黄色| 国产成人免费视频网站| 欧美日韩三级一区| 日本一区二区三区久久久久久久久不| 亚洲午夜影视影院在线观看| 国产美女娇喘av呻吟久久| 欧美网站大全在线观看| 久久久99精品久久| 午夜不卡av在线| 成人av小说网| 欧美sm极限捆绑bd| 亚洲国产综合视频在线观看| 高清国产一区二区| 日韩三级.com| 一区av在线播放| 国产成人av影院| 精品久久久久av影院| 亚洲电影欧美电影有声小说| jlzzjlzz欧美大全| 久久久蜜臀国产一区二区| 日本亚洲视频在线| 欧美午夜一区二区三区 | 久久久久久毛片| 午夜成人在线视频| 色婷婷综合久久久久中文一区二区| 久久综合视频网| 日韩高清一区在线| 欧美色大人视频| 一级特黄大欧美久久久| 成人国产在线观看| 国产欧美一区二区精品忘忧草| 蜜臀久久久久久久| 91麻豆精品国产自产在线| 亚洲激情在线播放| 一本久久精品一区二区| 国产精品污网站| 国产成人精品免费一区二区| 欧美精品一区二区三区很污很色的| 视频一区视频二区中文字幕| 国产一区欧美二区| 欧美大胆一级视频| 裸体一区二区三区| 日韩亚洲国产中文字幕欧美| 午夜亚洲福利老司机| 欧美亚洲禁片免费| 亚洲国产综合人成综合网站| 在线免费观看一区| 亚洲成人av福利| 欧美猛男男办公室激情| 日韩高清不卡在线| 欧美精品乱人伦久久久久久| 日韩av在线播放中文字幕| 91精品久久久久久久99蜜桃| 男女男精品视频网| 久久综合99re88久久爱| 国产成人综合在线| 国产精品久久久久aaaa| 色婷婷一区二区三区四区| 一区二区高清在线| 4438成人网| 精品一二三四在线| 国产精品久久久久久久浪潮网站 | 色综合久久久久综合99| 亚洲丝袜精品丝袜在线| 欧美亚洲愉拍一区二区| 午夜精品成人在线视频| 欧美成人官网二区| 国产99久久久久| 一区二区成人在线观看| 欧美一区二区三区小说| 国产馆精品极品| 亚洲精品国产a| 欧美一区二区在线免费观看| 久久99精品国产麻豆不卡| 亚洲国产精品成人综合色在线婷婷 | 国产精品福利一区| 欧美在线影院一区二区| 精品亚洲porn| 亚洲色图清纯唯美| 欧美一级日韩一级|