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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dispatch.cpp

?? 2009 最新測試成功的 Virtual Mouse 哈哈 !! 只有這裡才有喔
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		break;

	default:
		status = STATUS_INVALID_DEVICE_REQUEST;
	}

	// Complete IRP
	return CompleteIrp(Irp,status,BytesTxd);
}

/////////////////////////////////////////////////////////////////////////////
//	InternalControl:
//
//	Description:
//		Handle IRP_MJ_INTERNAL_DEVICE_CONTROL requests
//	Return Value:
//		This function returns STATUS_XXX
NTSTATUS InternalControl(IN PDEVICE_OBJECT fdo,IN PIRP Irp)
{
	PDEVICE_EXTENSION dx = (PDEVICE_EXTENSION)fdo->DeviceExtension;

	PIO_STACK_LOCATION              irpStack;
	irpStack = IoGetCurrentIrpStackLocation(Irp);

	ULONG CtlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
	DbgPrint("internal = %x\n",CtlCode);

	switch(CtlCode)
	{

		 // Jason Yu
    // Connect a mouse class device driver to the port driver.
    //
    case IOCTL_INTERNAL_MOUSE_CONNECT:

		{
		PCONNECT_DATA connectData;
        //
        // Only allow one connection.
        //
        //if (devExt->UpperConnectData.ClassService != NULL) {
        //    status = STATUS_SHARING_VIOLATION;
        //    break;
       // }
       // else
	//	if (irpStack->Parameters.DeviceIoControl.InputBufferLength <
      //          sizeof(CONNECT_DATA)) {
            //
            // invalid buffer
            //
//            status = STATUS_INVALID_PARAMETER;
        //    break;
        //}

        //
        // Copy the connection parameters to the device extension.


        //
        connectData = ((PCONNECT_DATA)
            (irpStack->Parameters.DeviceIoControl.Type3InputBuffer));

         dx->UpperConnectData = *connectData;

        //
        // Hook into the report chain.  Everytime a mouse packet is reported to
        // the system, MouFilter_ServiceCallback will be called
        //
       // connectData->ClassDeviceObject = devExt->Self;
    // Donot need Jason Yu   connectData->ClassService = MouFilter_ServiceCallback;
	//KeyboardClassDO = connectData->ClassDeviceObject;
	//		SeviceCallback  = (KeyboardClassServiceCallback)connectData->ClassService;

     	SeviceCallbackMouse  = (MouseClassServiceCallback)connectData->ClassService;

		KeyboardClassDO = connectData->ClassDeviceObject; //UpperData
		return CompleteIrp(Irp,STATUS_SUCCESS,0);
		}
        break;

    //
    // Disconnect a mouse class device driver from the port driver.
    //
    case IOCTL_INTERNAL_MOUSE_DISCONNECT:

        //
        // Clear the connection parameters in the device extension.
        //
        // devExt->UpperConnectData.ClassDeviceObject = NULL;
        // devExt->UpperConnectData.ClassService = NULL;

//        status = STATUS_NOT_IMPLEMENTED;
        break;

    //
    // Attach this driver to the initialization and byte processing of the 
    // i8042 (ie PS/2) mouse.  This is only necessary if you want to do PS/2
    // specific functions, otherwise hooking the CONNECT_DATA is sufficient
    //
  //  case IOCTL_INTERNAL_I8042_HOOK_MOUSE:   
//
  //      if (irpStack->Parameters.DeviceIoControl.InputBufferLength <
    //             sizeof(INTERNAL_I8042_HOOK_MOUSE)) {
            //
            // invalid buffer
            //
      //      status = STATUS_INVALID_PARAMETER;
        //    break;
        //}

        //
        // Copy the connection parameters to the device extension.
        //
       // hookMouse = (PINTERNAL_I8042_HOOK_MOUSE)
         //   (irpStack->Parameters.DeviceIoControl.Type3InputBuffer);

        //
        // Set isr routine and context and record any values from above this driver
        //
       // devExt->UpperContext = hookMouse->Context;
       // hookMouse->Context = (PVOID) DeviceObject;

       // if (hookMouse->IsrRoutine) {
         //   devExt->UpperIsrHook = hookMouse->IsrRoutine;
        //}
        //hookMouse->IsrRoutine = (PI8042_MOUSE_ISR) MouFilter_IsrHook;

        //
        // Store all of the other functions we might need in the future
        //
       // devExt->IsrWritePort = hookMouse->IsrWritePort;
       // devExt->CallContext = hookMouse->CallContext;
       // devExt->QueueMousePacket = hookMouse->QueueMousePacket;

 //      break;

    //
    // These internal ioctls are not supported by the new PnP model.
    //
#if 0       // obsolete
    case IOCTL_INTERNAL_MOUSE_ENABLE:
    case IOCTL_INTERNAL_MOUSE_DISABLE:
        status = STATUS_NOT_SUPPORTED;
        break;
#endif  // obsolete

    //
    // Might want to capture this in the future.  For now, then pass it down
    // the stack.  These queries must be successful for the RIT to communicate
    // with the mouse.
    //
    case IOCTL_MOUSE_QUERY_ATTRIBUTES:
		{
			PMOUSE_ATTRIBUTES pka = (PMOUSE_ATTRIBUTES) Irp->AssociatedIrp.SystemBuffer ;
			pka->MouseIdentifier   = 2;
			pka->NumberOfButtons= 2;
			pka->SampleRate               = 900;
			pka->InputDataQueueLength       = 256;
			return CompleteIrp(Irp,STATUS_SUCCESS,sizeof(MOUSE_ATTRIBUTES));
		}
      break;
//////////////////////////////////////// Jason End
	case IOCTL_INTERNAL_KEYBOARD_CONNECT:
		if (irpStack->Parameters.DeviceIoControl.InputBufferLength >= sizeof(CONNECT_DATA))
		{
			PCONNECT_DATA connectData = ((PCONNECT_DATA)(irpStack->Parameters.DeviceIoControl.Type3InputBuffer));
			KeyboardClassDO = connectData->ClassDeviceObject;
			SeviceCallback  = (KeyboardClassServiceCallback)connectData->ClassService;

			DbgPrint("KeyClass = %x,Service Callback = %x\n",KeyboardClassDO,SeviceCallback);
			return CompleteIrp(Irp,STATUS_SUCCESS,0);
		}
		break;
	case IOCTL_KEYBOARD_QUERY_ATTRIBUTES:
		if(irpStack->Parameters.DeviceIoControl.InputBufferLength>=sizeof(KEYBOARD_UNIT_ID_PARAMETER))
		{
			PKEYBOARD_UNIT_ID_PARAMETER puip = (PKEYBOARD_UNIT_ID_PARAMETER) Irp->AssociatedIrp.SystemBuffer ;
			UnitId = puip-> UnitId;
			DbgPrint("id = %x\n",UnitId);
		}
		else
		{
			DbgPrint("id = 0\n");
		}

		if (irpStack->Parameters.DeviceIoControl.OutputBufferLength <sizeof(KEYBOARD_ATTRIBUTES))
		{
			return CompleteIrp(Irp,STATUS_BUFFER_TOO_SMALL,0);
		}
		else
		{
		PKEYBOARD_ATTRIBUTES pka = (PKEYBOARD_ATTRIBUTES) Irp->AssociatedIrp.SystemBuffer ;
			pka->KeyboardIdentifier.Type    = 2;
			pka->KeyboardIdentifier.Subtype = 0;
			pka->KeyboardMode               = 2;
			pka->NumberOfFunctionKeys       = 0;
			pka->NumberOfIndicators         = 0;
			pka->NumberOfKeysTotal          = 101;
			pka->InputDataQueueLength       = 256;
			pka->KeyRepeatMinimum.UnitId    = UnitId;
			pka->KeyRepeatMinimum.Rate      = 15;
			pka->KeyRepeatMinimum.Delay     = 100;
			pka->KeyRepeatMaximum.UnitId    = UnitId;
			pka->KeyRepeatMaximum.Rate      = 150;
			pka->KeyRepeatMaximum.Delay     = 10;
			return CompleteIrp(Irp,STATUS_SUCCESS,sizeof(KEYBOARD_ATTRIBUTES));	
		}
	case IOCTL_KEYBOARD_SET_TYPEMATIC:
		DbgPrint("IOCTL_KEYBOARD_SET_TYPEMATIC\n");
		break;
	case IOCTL_KEYBOARD_SET_INDICATORS:
		DbgPrint("IOCTL_KEYBOARD_SET_INDICATORS\n");
		break;
	case IOCTL_KEYBOARD_QUERY_TYPEMATIC:
		DbgPrint("IOCTL_KEYBOARD_QUERY_TYPEMATIC\n");
		break;
	case IOCTL_KEYBOARD_QUERY_INDICATORS:
		DbgPrint("IOCTL_KEYBOARD_QUERY_INDICATORS\n");
		break;
	case IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION:
		DbgPrint("IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION\n");
		break;
	case IOCTL_KEYBOARD_INSERT_DATA:
		DbgPrint("IOCTL_KEYBOARD_INSERT_DATA\n");
		break;
	}

	IoSkipCurrentIrpStackLocation(Irp);
	return IoCallDriver( dx->NextStackDevice, Irp);
}

/////////////////////////////////////////////////////////////////////////////
//	SystemControl:
//
//	Description:
//		Handle IRP_MJ_SYSTEM_CONTROL requests
//
//	Arguments:
//		Pointer to our FDO
//		Pointer to the IRP
//			Various minor parameters
//			IrpStack->Parameters.WMI.xxx has WMI parameters
//
//	Return Value:
//		This function returns STATUS_XXX

NTSTATUS SystemControl(	IN PDEVICE_OBJECT fdo,IN PIRP Irp)
{
	if(FunctionDevice == fdo)
	{
		return CompleteIrp(Irp,STATUS_UNSUCCESSFUL,0);
	}

	// Just pass to lower driver
	IoSkipCurrentIrpStackLocation(Irp);
	PDEVICE_EXTENSION dx = (PDEVICE_EXTENSION)fdo->DeviceExtension;
	return IoCallDriver( dx->NextStackDevice, Irp);
}

/////////////////////////////////////////////////////////////////////////////
//	CompleteIrp:	Sets IoStatus and completes the IRP

NTSTATUS CompleteIrp( PIRP Irp, NTSTATUS status, ULONG info)
{
	Irp->IoStatus.Status = status;
	Irp->IoStatus.Information = info;
	IoCompleteRequest(Irp,IO_NO_INCREMENT);
	return status;
}

/////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品欧美日韩| 亚洲天堂免费在线观看视频| 99国产欧美久久久精品| 亚洲男同1069视频| 欧美综合视频在线观看| 夜夜操天天操亚洲| 狠狠色狠狠色综合| 在线亚洲欧美专区二区| 国产拍欧美日韩视频二区| 亚洲一二三区视频在线观看| 国产成人午夜99999| 欧美人牲a欧美精品| 亚洲欧美日韩国产综合在线| 国产中文字幕精品| 欧美一级高清片在线观看| 亚洲欧美日韩国产综合在线| 国产mv日韩mv欧美| 久久免费看少妇高潮| 免费看日韩精品| 精品视频一区 二区 三区| 亚洲色图欧洲色图婷婷| 一区二区三区四区在线| 亚洲18女电影在线观看| 成人av免费在线观看| 久久综合给合久久狠狠狠97色69| 偷偷要91色婷婷| 在线观看国产91| 亚洲自拍偷拍网站| 不卡一卡二卡三乱码免费网站| 国产欧美精品日韩区二区麻豆天美| 蜜桃视频免费观看一区| 日韩一级完整毛片| 日韩av在线免费观看不卡| 欧美精品视频www在线观看| 午夜精品福利久久久| 精品视频一区 二区 三区| 亚洲va国产天堂va久久en| 欧美三级日韩三级| 首页亚洲欧美制服丝腿| 在线综合+亚洲+欧美中文字幕| 日韩高清国产一区在线| 日韩一区和二区| 国模一区二区三区白浆| 国产日韩亚洲欧美综合| 风间由美一区二区av101| 国产精品情趣视频| 在线中文字幕不卡| 日本最新不卡在线| 久久精品一级爱片| 成人黄色网址在线观看| 一区二区三区在线观看视频| 欧美精品在欧美一区二区少妇| 麻豆精品蜜桃视频网站| 免费观看久久久4p| 成人中文字幕合集| 午夜精品123| 日韩欧美自拍偷拍| 国产美女精品在线| 国产精品国产三级国产| 在线观看不卡一区| 蜜桃一区二区三区在线| 国产清纯白嫩初高生在线观看91 | 久久久蜜桃精品| 成人av资源站| 性久久久久久久| 日韩欧美高清一区| 91丨porny丨最新| 奇米一区二区三区av| 中文幕一区二区三区久久蜜桃| 一本到一区二区三区| 蜜臀91精品一区二区三区| 国产精品日韩成人| 欧美一区二区三区啪啪| 国产成人av电影在线播放| 亚洲国产欧美在线| 国产亚洲欧美激情| 欧美久久久久免费| 99视频热这里只有精品免费| 日韩av在线免费观看不卡| 欧美激情一区二区三区在线| 欧美老年两性高潮| 91在线视频网址| 九一九一国产精品| 亚洲高清视频中文字幕| 国产精品久久久久婷婷二区次| 欧美高清视频不卡网| 91视频免费观看| 国产一区不卡在线| 轻轻草成人在线| 亚洲国产精品一区二区尤物区| 欧美国产精品一区二区三区| 日韩欧美精品三级| 91福利资源站| 99国内精品久久| 国产ts人妖一区二区| 精品一区二区在线观看| 亚洲大片在线观看| 亚洲欧美日韩久久| 欧美高清在线一区| 久久久亚洲国产美女国产盗摄 | 亚洲国产精品影院| 亚洲欧洲综合另类在线| 国产欧美日韩三区| 精品久久久久久久一区二区蜜臀| 欧美日韩国产美女| 欧美性极品少妇| 色综合色综合色综合| 91在线云播放| 91亚洲精品久久久蜜桃| 成人免费视频免费观看| 国产美女在线精品| 国产一区日韩二区欧美三区| 极品瑜伽女神91| 精品一区二区三区免费| 激情综合亚洲精品| 蜜臀av国产精品久久久久 | 久久精品视频一区| 欧美成人在线直播| 26uuu精品一区二区三区四区在线| 日韩午夜在线影院| 精品国产91九色蝌蚪| 久久综合99re88久久爱| 久久综合网色—综合色88| 国产亚洲一区二区三区| 欧美激情在线一区二区三区| 国产精品五月天| 亚洲男同性恋视频| 亚洲一卡二卡三卡四卡| 午夜精品久久久久久久久久| 日韩精品乱码av一区二区| 六月婷婷色综合| 国产高清久久久久| 国产精品自产自拍| va亚洲va日韩不卡在线观看| 色婷婷综合五月| 91精品国产品国语在线不卡| 欧美一区二区三区公司| 久久久久国产一区二区三区四区 | 日韩免费高清视频| 国产亚洲精品久| 亚洲欧美日韩在线| 首页综合国产亚洲丝袜| 极品少妇xxxx精品少妇| 高清beeg欧美| 欧美日韩aaaaa| 国产欧美日韩久久| 亚洲风情在线资源站| 久久福利资源站| 99re8在线精品视频免费播放| 欧美在线高清视频| 久久久99免费| 亚洲精品日韩综合观看成人91| 男女男精品网站| 成人黄色电影在线| 欧美精品自拍偷拍| 国产精品乱子久久久久| 天天综合日日夜夜精品| 丁香六月久久综合狠狠色| 欧美午夜电影网| 国产欧美精品日韩区二区麻豆天美| 亚洲最新在线观看| 国产成人av电影在线| 综合久久综合久久| 久久国产麻豆精品| 欧美午夜精品理论片a级按摩| 2023国产精品| 亚洲bt欧美bt精品| 99久久免费视频.com| 欧美成人一区二区| 午夜婷婷国产麻豆精品| 成人av资源在线观看| 欧美不卡一二三| 亚洲午夜电影网| 不卡的av中国片| 久久久久久久久97黄色工厂| 丝袜诱惑亚洲看片| 欧洲一区在线电影| 国产精品福利在线播放| 精品亚洲国产成人av制服丝袜| 色欧美日韩亚洲| 日韩一区中文字幕| 国产成人午夜99999| 精品三级在线观看| 日韩国产欧美在线视频| 欧美主播一区二区三区| 国产精品久久久久精k8| 国产激情一区二区三区四区| 日韩视频永久免费| 丝袜亚洲另类欧美| 欧美日韩在线一区二区| 一区二区高清在线| 色欧美日韩亚洲| 亚洲欧美日本在线| 91网站在线观看视频| 国产精品乱人伦中文| 成人av小说网| 国产精品国产自产拍在线| 成人激情小说乱人伦| 日本一区二区三区免费乱视频| 国产精品一级黄|