亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
youjizz久久| 亚洲欧洲在线观看av| 国产成人精品网址| 一个色妞综合视频在线观看| 91美女片黄在线观看91美女| 丁香网亚洲国际| 国产精品 日产精品 欧美精品| 91在线播放网址| 成人国产精品免费观看视频| 国产成人av一区| 床上的激情91.| av高清久久久| 色综合天天综合网天天看片| 成人综合婷婷国产精品久久蜜臀 | 成人高清视频免费观看| 韩国女主播一区二区三区| 久久99国产精品麻豆| 韩国av一区二区三区四区| 国产老女人精品毛片久久| 国产黄人亚洲片| www.日韩在线| 日本二三区不卡| 欧美三区在线视频| 制服丝袜在线91| 日韩免费高清视频| 久久久国际精品| 国产精品对白交换视频 | 亚洲欧美成人一区二区三区| 中文字幕一区av| 亚洲免费av网站| 午夜精品一区二区三区电影天堂| 久久久国产精品麻豆| 国产精品对白交换视频 | 精品国产乱码久久久久久久久| 99久久久免费精品国产一区二区 | 美女mm1313爽爽久久久蜜臀| 热久久一区二区| 国产精品白丝jk白祙喷水网站 | 一道本成人在线| 欧美日韩精品欧美日韩精品一 | 精品国产精品一区二区夜夜嗨| 色综合久久中文字幕综合网| 欧美丝袜丝nylons| 精品国产青草久久久久福利| 成人av片在线观看| 久久99精品国产麻豆婷婷| 午夜精品影院在线观看| 视频在线观看一区| 久久www免费人成看片高清| 久久99国内精品| 日韩电影在线一区| 国产麻豆一精品一av一免费 | 久久一夜天堂av一区二区三区| 午夜久久福利影院| 一区二区三区欧美亚洲| 亚洲图片有声小说| 国产伦精品一区二区三区视频青涩| 久久久精品黄色| 99精品在线免费| 国产高清久久久| 成人免费视频网站在线观看| 4438x亚洲最大成人网| 久久国产精品露脸对白| 一区二区三区四区激情| 99精品久久久久久| 91精品欧美一区二区三区综合在| 在线视频欧美精品| 久久影院午夜论| 亚洲综合免费观看高清完整版在线| 亚洲同性gay激情无套| 看电视剧不卡顿的网站| 91蝌蚪porny| 26uuu欧美日本| 亚洲一区二区高清| 99国产一区二区三精品乱码| 欧美一级片在线观看| 亚洲精品欧美激情| 国产69精品久久久久毛片| 日韩写真欧美这视频| 亚洲日本韩国一区| 国产盗摄一区二区| 欧美大片日本大片免费观看| 亚洲高清免费视频| 色婷婷综合久久久久中文 | 在线影院国内精品| 欧美极品xxx| 狠狠色丁香九九婷婷综合五月| 国产一区二区电影| 日韩三级高清在线| 天天色天天操综合| 欧美日韩一区二区三区在线看| 欧美肥胖老妇做爰| 亚洲午夜精品在线| 色偷偷成人一区二区三区91| 国产精品入口麻豆原神| 国产一区二区伦理片| 日韩精品最新网址| 美女爽到高潮91| 91精品国产入口在线| 天堂久久久久va久久久久| 色婷婷av一区二区三区大白胸| 日韩欧美综合一区| 青青草国产成人99久久| 欧美挠脚心视频网站| 亚洲精品国产高清久久伦理二区| 国产成人夜色高潮福利影视| 欧美性生活一区| 一区二区免费看| 在线观看免费视频综合| 亚洲精品一卡二卡| 欧美专区亚洲专区| 亚洲成人1区2区| 538prom精品视频线放| 爽爽淫人综合网网站| 88在线观看91蜜桃国自产| 午夜国产不卡在线观看视频| 欧美片在线播放| 婷婷开心激情综合| 欧美一区二区三区免费大片| 热久久一区二区| 欧美变态凌虐bdsm| 国产成人免费在线视频| 国产女人18毛片水真多成人如厕| 亚洲成a人v欧美综合天堂| 欧美猛男超大videosgay| 日韩电影一区二区三区| 欧美本精品男人aⅴ天堂| 国产精品影音先锋| 中文字幕亚洲不卡| 欧美中文字幕一二三区视频| 99久久久无码国产精品| 亚洲视频在线一区观看| 欧美视频在线观看一区| 日本在线不卡视频一二三区| 欧美电影免费观看高清完整版| 亚洲欧美日韩国产综合| 色综合视频一区二区三区高清| 久久久久亚洲综合| 99视频精品免费视频| 亚洲国产日韩综合久久精品| 777色狠狠一区二区三区| 精品无人码麻豆乱码1区2区 | 久久久久久久av麻豆果冻| 粉嫩一区二区三区在线看| 亚洲欧洲制服丝袜| 正在播放亚洲一区| 国产伦精品一区二区三区在线观看 | 久久久久久久网| 99精品欧美一区二区蜜桃免费| 久久久久久黄色| 色播五月激情综合网| 免费欧美在线视频| 国产婷婷精品av在线| 日本精品一区二区三区高清| 毛片一区二区三区| 亚洲欧洲av另类| 欧美一区二区三区成人| 成人一道本在线| 石原莉奈在线亚洲二区| 亚洲国产精品t66y| 欧美男人的天堂一二区| 成人动漫一区二区三区| 亚洲午夜日本在线观看| 国产亚洲视频系列| 欧美绝品在线观看成人午夜影视| 国产精品午夜在线观看| 欧美日韩国产另类不卡| 国产成人精品免费看| 日韩一区欧美二区| 成人欧美一区二区三区小说| 欧美色网站导航| 床上的激情91.| 日本视频免费一区| 亚洲天堂免费看| 亚洲精品在线电影| 欧美日韩精品欧美日韩精品一综合| 亚洲精品久久7777| 久久亚洲综合色| 欧美日韩日日夜夜| 9人人澡人人爽人人精品| 久久国产精品一区二区| 一区二区三区**美女毛片| 国产三区在线成人av| 欧美一区二区三区喷汁尤物| 99re热视频这里只精品| 国产高清在线精品| 麻豆精品精品国产自在97香蕉| 欧美日韩一区二区三区在线 | 国产精品美女久久久久高潮| 欧美肥妇bbw| 91久久精品一区二区二区| 国产成人亚洲精品青草天美| 毛片不卡一区二区| 午夜国产不卡在线观看视频| 一区二区高清在线| 日韩一区欧美小说| 国产精品久久久久桃色tv| 国产亚洲1区2区3区| 精品日韩欧美在线| 欧美一区二区三区小说|