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

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

?? s3cjoystick.cpp

?? SMDK2440 導航桿(joystick) Driver
?? CPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//

/*++

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:

    Drv.c   Power Controller Driver

Abstract:

   Streams interface driver (MDD)

Functions:

Notes:

--*/

#include <windows.h>
#include <Winuser.h>
#include <bsp.h>


volatile S3C2440A_IOPORT_REG	*s2440IOP = NULL;
volatile S3C2440A_INTR_REG		*s2440INT = NULL;
volatile BSP_ARGS               *g_pBSPArgs = NULL;

void joystickActThread();
void joystickInterruptDone(UINT32 irq);
HANDLE g_hJoystickActThreads;
HANDLE g_hJoystickActEvents;
DWORD g_dwJoystickActIntr = IRQ_EINT14;
DWORD g_dwJoystickActSysIntr = SYSINTR_UNDEFINED;


// IRQ_EINT14,   IRQ_EINT16,   IRQ_EINT17,   IRQ_EINT18,   IRQ_EINT20
// JSKRETURN       JSKUP         JSKDOWN       JSKRIGHT      JSKLEFT
// VK_RETURN     VK_UP         VK_DOWN       VK_RIGHT      VK_LEFT
DWORD joystickMAP[][2]=
{
	{VK_RETURN ,IRQ_EINT14},
	{VK_UP ,IRQ_EINT16},
	{VK_DOWN ,IRQ_EINT17},
	{VK_RIGHT ,IRQ_EINT18},
	{VK_LEFT ,IRQ_EINT20}
};
	


BOOL
DllEntry(
    HINSTANCE   hinstDll,             /*@parm Instance pointer. */
    DWORD   dwReason,                 /*@parm Reason routine is called. */
    LPVOID  lpReserved                /*@parm system parameter. */
    )
{
    if ( dwReason == DLL_PROCESS_ATTACH ) {
        DEBUGREGISTER(hinstDll);
        RETAILMSG (1, (TEXT("PWR: Process Attach\r\n")));
    }

    if ( dwReason == DLL_PROCESS_DETACH ) {
        RETAILMSG (1, (TEXT("PWR: Process Detach\r\n")));
    }

    return(TRUE);
}




/*++

Called by Device Manager to initialize the streams interface in response to ActivateDevice.
We passed ActivateDevice a pointer to our device context, but must read it out of the registry as "ClientInfo".

Returns context used in XXX_Open, XXX_PowerDown, XXX_PowerUp, and XXX_Deinit

--*/
BOOL JSK_Init(
  LPCTSTR pContext,
  DWORD dwBusContext
)
{
	RETAILMSG(1,(TEXT("[JSK] INIT Start\r\n")));
	
	DWORD threadID;                         
	BOOL bSuccess;
	g_pBSPArgs = ((BSP_ARGS *) IMAGE_SHARE_ARGS_UA_START);

	
    // GPIO Virtual alloc
	s2440IOP = (volatile S3C2440A_IOPORT_REG *) VirtualAlloc(0,sizeof(S3C2440A_IOPORT_REG),MEM_RESERVE, PAGE_NOACCESS);
	if(s2440IOP == NULL) {
		RETAILMSG(1,(TEXT("For s2440IOP: VirtualAlloc failed!\r\n")));
	}
	else {
		if(!VirtualCopy((PVOID)s2440IOP,(PVOID)(S3C2440A_BASE_REG_PA_IOPORT >> 8),sizeof(S3C2440A_IOPORT_REG),PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE )) {
			RETAILMSG(1,(TEXT("For s2440IOP: VirtualCopy failed!\r\n")));
		}
	}
	
	// Interrupt Virtual alloc
	s2440INT = (volatile S3C2440A_INTR_REG *) VirtualAlloc(0,sizeof(S3C2440A_INTR_REG),MEM_RESERVE, PAGE_NOACCESS);
	if(s2440INT == NULL) {
		RETAILMSG(1,(TEXT("For s2440INT: VirtualAlloc failed!\r\n")));
	}
	else {
		if(!VirtualCopy((PVOID)s2440INT,(PVOID)(S3C2440A_BASE_REG_PA_INTR >> 8),sizeof(S3C2440A_INTR_REG),PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE )) {
			RETAILMSG(1,(TEXT("For s2440INT: VirtualCopy failed!\r\n")));
		}
	}
	
	s2440IOP->GPGDAT  |=  (0x5D << 6);
	s2440IOP->GPGUP   |=  (0x5D << 6);
	s2440IOP->GPGCON  = (s2440IOP->GPGCON & (~(0x33F3 << 12)))|(0x22A2<<12);
	
    s2440IOP->EXTINT2 = (s2440IOP->EXTINT2 & (~(0xF0FFF)))|(0x20222);		
    
    s2440IOP->EXTINT1 =(s2440IOP->EXTINT1& (~(0xF<< 24)))|(0x2 << 24);
    
    s2440IOP->EINTMASK &=  ~(0x5D << 14);
    if (s2440IOP->EINTPEND & (0x5D << 14))
    {
    	s2440IOP->EINTPEND|=(0x5D << 14);
    };
    
    g_hJoystickActEvents = CreateEvent(NULL, FALSE, FALSE, NULL);
  
    if (!g_hJoystickActEvents)
    {
    	RETAILMSG(1, (TEXT("[JSK] ERROR: Failed to create Event.\r\n")));
    	return FALSE;
    }
    	
    if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_dwJoystickActIntr, sizeof(UINT32), &g_dwJoystickActSysIntr, sizeof(UINT32), NULL))
    {
        RETAILMSG(1, (TEXT("[JSK] ERROR: Failed to request sysintr value for Intr interrupt.\r\n")));
        return FALSE;
    }
	bSuccess = InterruptInitialize(g_dwJoystickActSysIntr, g_hJoystickActEvents, NULL, 0);
    if (!bSuccess) 
    {
        RETAILMSG(1,(TEXT("Fail to initialize interrupt event\r\n")));
        return FALSE;
    } 
    //InterruptDone(g_dwJoystickActSysIntr);
   	
    g_hJoystickActThreads = CreateThread(NULL,
                                 0,
                                 (LPTHREAD_START_ROUTINE)joystickActThread,
                                 0,
                                 0,
                                 &threadID);
    
    if (g_hJoystickActThreads==NULL ) {
    	RETAILMSG(1,(TEXT("[JSK] Error : Failed to Create JSK Act thread.\r\n")));
    	return FALSE;
    }
	RETAILMSG(1,(TEXT("[JSK] INIT End. \r\n")));
	return true;
}



DWORD JSK_Open(
  DWORD hDeviceContext,
  DWORD AccessCode,
  DWORD ShareMode 
)
{
	return 0;
}

BOOL JSK_Close(
  DWORD hOpenContext 
)
{
	return true;
}

DWORD JSK_Write(
  DWORD hOpenContext,
  LPCVOID pBuffer,
  DWORD Count 
)
{
	return 0;
}


DWORD JSK_Read(
  DWORD hOpenContext,
  LPVOID pBuffer,
  DWORD Count 
)
{
	return 0;
}

BOOL JSK_IOControl(
  DWORD hOpenContext,
  DWORD dwCode,
  PBYTE pBufIn,
  DWORD dwLenIn,
  PBYTE pBufOut,
  DWORD dwLenOut,
  PDWORD pdwActualOut 
)
{
	return true;
}


DWORD JSK_Seek(
  DWORD hOpenContext,
  long Amount,
  WORD Type 
)
{
	return 0;
}


void JSK_PowerDown(
  DWORD hDeviceContext 
)
{
	return;
}
void JSK_PowerUp(
  DWORD hDeviceContext 
)
{
	return;
}

BOOL JSK_Deinit(
  DWORD hDeviceContext 
)
{
	VirtualFree((void*)g_pBSPArgs, 0, MEM_RELEASE);
	VirtualFree((void*)s2440IOP, 0, MEM_RELEASE);
	VirtualFree((void*)s2440INT, 0, MEM_RELEASE);
	return true;
}

void joystickActThread()
{
	DWORD	dwEvent;

	while (1) 
	{
						
  		dwEvent =WaitForSingleObject(g_hJoystickActEvents, INFINITE);
  		switch (dwEvent)
  		{	
    		case WAIT_OBJECT_0:
    			SetKMode(1);
    			keybd_event((BYTE)joystickMAP[g_pBSPArgs->nJSKKey][0],0,0,0 );
    			joystickInterruptDone(joystickMAP[g_pBSPArgs->nJSKKey][1]);  
    			SetKMode(0);  			    
    			break;
			case WAIT_TIMEOUT:
				RETAILMSG(1,(TEXT("[JSK] timout. \r\n")));
				break;
    		default:
      			RETAILMSG(1,(TEXT("[JSK] Error=%x. \r\n"),GetLastError()));
      		 	return;
 		 }
	}
}

void joystickInterruptDone(UINT32 irq)
{
	UINT32 mask;
	// Use external mask register
    mask = 1 << (irq - IRQ_EINT4 + 4);
    s2440IOP->EINTPEND = mask;
    s2440IOP->EINTMASK &=(~mask);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲亚洲精品在线| 国产亚洲精品福利| 亚洲人成人一区二区在线观看| 激情久久五月天| 国产一区欧美一区| 午夜激情一区二区三区| 免费成人av在线| 日本一区二区免费在线| 性感美女极品91精品| 免费的成人av| 中文字幕亚洲欧美在线不卡| 欧美日本一区二区三区四区| 天堂资源在线中文精品| 日本一区二区三区dvd视频在线 | 国产精品丝袜黑色高跟| 欧美视频一区在线观看| 国产99精品国产| 久久成人久久鬼色| 亚洲精品日韩一| 久久亚洲免费视频| 天天射综合影视| 26uuu亚洲综合色| 色老综合老女人久久久| 99视频在线观看一区三区| 久久国产精品免费| 亚洲一区二区三区四区中文字幕| 亚洲精品一线二线三线无人区| 欧美日韩中文国产| 日本电影亚洲天堂一区| 国产成人午夜高潮毛片| 男人的天堂久久精品| 亚洲综合免费观看高清完整版在线 | 国产曰批免费观看久久久| 日韩午夜三级在线| 激情六月婷婷综合| 精品国产一区二区国模嫣然| 99综合电影在线视频| 92精品国产成人观看免费| 91精品在线观看入口| 国产欧美一区二区精品婷婷| 欧美一区二区在线免费播放 | 日韩欧美一区二区在线视频| 91国产免费看| 在线电影国产精品| 欧美亚洲一区二区三区四区| 美女在线一区二区| 洋洋成人永久网站入口| 97久久精品人人澡人人爽| 亚洲在线一区二区三区| 色综合夜色一区| 中文字幕欧美日韩一区| 国内精品自线一区二区三区视频| 最新国产成人在线观看| 91精品一区二区三区久久久久久| 在线亚洲欧美专区二区| 国产电影一区二区三区| 日本网站在线观看一区二区三区| 国产目拍亚洲精品99久久精品| 欧美日本在线视频| 日韩极品在线观看| 久久久99精品久久| 国产一区二区三区在线看麻豆| 日韩在线一区二区三区| 亚瑟在线精品视频| 国产喷白浆一区二区三区| 精品成人在线观看| 日韩免费福利电影在线观看| 69堂国产成人免费视频| 国产一区二区三区四区五区入口| 欧美日韩亚洲综合一区| 成人免费毛片嘿嘿连载视频| 日本aⅴ免费视频一区二区三区| 久久久久国产精品免费免费搜索| 欧美va亚洲va| 精品国产乱子伦一区| 欧美高清在线精品一区| 欧美韩国日本不卡| 国产精品久久久久婷婷| **性色生活片久久毛片| 亚洲小说春色综合另类电影| 国产一区二区91| 色综合久久天天综合网| 欧美亚洲一区二区三区四区| 亚洲一区二区在线免费看| av动漫一区二区| 91麻豆精品国产91久久久久久 | 色综合天天综合| 欧美日韩亚洲不卡| 国产精品国产三级国产三级人妇| 国产综合成人久久大片91| av电影在线观看一区| 日韩视频永久免费| 亚洲素人一区二区| 日本成人在线看| 色综合久久综合中文综合网| 欧美久久一二三四区| 中文欧美字幕免费| 成人丝袜视频网| 精品国产91亚洲一区二区三区婷婷| 午夜精品福利视频网站| 欧美视频一区二区| 美女视频黄a大片欧美| 欧美丰满少妇xxxxx高潮对白 | 色狠狠一区二区三区香蕉| 亚洲欧洲av一区二区三区久久| 欧美一区午夜精品| 亚洲一二三区在线观看| 欧美日韩国产免费一区二区 | 成人app在线| 久久免费视频色| 亚洲影院在线观看| 成人小视频在线| 久久综合色一综合色88| 日韩国产欧美一区二区三区| 色综合色综合色综合| 国产日韩欧美综合在线| 美女诱惑一区二区| 欧美伦理视频网站| 亚洲综合在线免费观看| 不卡一卡二卡三乱码免费网站| 欧美一区二区三区在| 亚洲午夜激情网站| 香蕉成人啪国产精品视频综合网| 亚洲午夜久久久久| 成人性生交大片免费看在线播放 | 欧美不卡一区二区| 日韩中文字幕区一区有砖一区 | 国产午夜精品一区二区| jlzzjlzz国产精品久久| 久久国产精品72免费观看| 粉嫩av一区二区三区| 欧美激情在线一区二区三区| 国产精品综合网| 亚洲免费观看高清完整版在线 | 欧美三级乱人伦电影| 免费人成网站在线观看欧美高清| 中文字幕av一区 二区| 欧美亚洲一区三区| 久久精品国产秦先生| 久久久99久久| 欧美美女bb生活片| 国产精品69久久久久水密桃| 自拍偷拍国产亚洲| 久久精品男人的天堂| 在线观看亚洲一区| 91精品国产乱码久久蜜臀| 欧美成人三级电影在线| 免费一级片91| 欧美精品一区二区蜜臀亚洲| 精品综合免费视频观看| 久久综合久久久久88| 丁香一区二区三区| 中文字幕日韩精品一区| 91豆麻精品91久久久久久| 亚洲第四色夜色| 欧美一级生活片| 激情文学综合丁香| 中文字幕一区二区三区色视频| 99国产欧美另类久久久精品| 亚洲综合激情另类小说区| 911精品国产一区二区在线| 久久精品99国产精品日本| 国产欧美日韩综合| 色国产精品一区在线观看| 日韩av中文字幕一区二区三区| 精品福利在线导航| 成人激情免费电影网址| 亚洲综合免费观看高清完整版| 日韩精品中文字幕一区| 成人午夜碰碰视频| 亚洲大尺度视频在线观看| 精品福利二区三区| av网站免费线看精品| 偷拍一区二区三区| 日本一区二区三区久久久久久久久不| 成人精品国产一区二区4080 | 欧美激情在线看| 欧美视频自拍偷拍| 国产成人免费视频网站| 亚洲你懂的在线视频| 日韩精品中午字幕| 99精品视频在线播放观看| 亚洲h动漫在线| 国产精品久久久久aaaa樱花| 精品视频资源站| 成人一道本在线| 日本午夜一本久久久综合| 亚洲欧美在线视频观看| 91精品国产综合久久国产大片| 国产精品1区2区| 亚洲成av人片一区二区梦乃| 国产精品伦一区| 日韩精品一区二区三区中文不卡| 色婷婷精品大在线视频| 美国一区二区三区在线播放| 一区精品在线播放| 欧美精品一区在线观看| 欧美日韩黄色影视| 色悠久久久久综合欧美99| 成人永久aaa|