⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyboardtestreg.cpp

📁 WINCE ARM9三星2440下的按键驱动验证程序
💻 CPP
字号:
#include   "stdafx.h"
#include   "KeyBoardTestReg.h"
#include   <Afxwin.h>

//加载驱动代码
void LoadKeyboardDriver()
{
	LONG     nErr ;
	DWORD    dwDisp ;

	//创建注册表键
	nErr = RegCreateKeyEx(HKEY_LOCAL_MACHINE, szRegKeyboard, 0, L"", 0, 0, NULL, &KeyboardhDrvKey, &dwDisp) ;
	if(nErr != ERROR_SUCCESS)
	{
//		MessageBox(NULL, _T("Register Keyboard driver Failed!"), NULL, MB_OK) ;
		RETAILMSG(1, (TEXT("LoadKeyboardDriver: RegCreateKeyEx failed!\r\n")));
		return ;
	}
	else 
	{
		//往注册表中添加内容
		WRITE_REG_SZ(L"Prefix", szKeyboardPrefix) ;   //写入"Prefix"="LED"
		WRITE_REG_SZ(L"Dll", szKeyboardDll) ;         //写入"Dll"="L"LedDriver.dll" "
		WRITE_REG_SZ(L"FriendlyName", szKeyboardFriendlyName) ; 

		WRITE_REG_DWORD(L"Order", KeyboardDriverOrder) ;  
		WRITE_REG_DWORD(L"Index", KeyboardDriverIndex) ;  
	}
	KeyBoardHandleDriver = ActivateDeviceEx(szRegKeyboard, NULL, 0, NULL) ;
	if(KeyBoardHandleDriver == INVALID_HANDLE_VALUE)
		RETAILMSG(1, (TEXT("LoadKeyboardDriver: ActivateDeviceEx failed!\r\n")));
	else 
		RETAILMSG(1, (TEXT("LoadKeyboardDriver: LoadKeyboardDriver Success!\r\n")));
}

//卸载驱动代码
void UnLoadKeyboardDriver()
{
	if(KeyBoardHandleDriver != INVALID_HANDLE_VALUE)
	{
		CloseKeyboardDriver();
		BOOL ret = DeactivateDevice(KeyBoardHandleDriver) ;
		if(ret == TRUE)
		{
			RegCloseKey(KeyboardhDrvKey) ;
			RegDeleteKey(HKEY_LOCAL_MACHINE, szRegKeyboard) ;
			KeyBoardHandleDriver = INVALID_HANDLE_VALUE ;
			RETAILMSG(1, (TEXT("UnLoadKeyboardDriver: DeactivateDevice Success!\r\n")));
		}
		else 
		{
			RETAILMSG(1, (TEXT("UnLoadKeyboardDriver: DeactivateDevice failed!\r\n")));
		}
	}
}

//打开驱动代码
void OpenKeyboardDriver(HWND hWnd)
{
    DWORD IDThread;
	HANDLE hReadKeyThread;   
	KeyBoardhFile = CreateFile(_T("KEY1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) ;
//	RETAILMSG(1, (TEXT("ReadKeyBoardThread: KeyBoardhFile is 0x%x.\r\n"),KeyBoardhFile));
	if(KeyBoardhFile == INVALID_HANDLE_VALUE)
	{   
		RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateFile failed!\r\n")));
		return ;
	}
	else  RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateFile Success!\r\n")));

	//创建读KEY1状态线程
	hReadKeyThread = CreateThread(0, 0, ReadKeyBoardThread, NULL, 0, &IDThread);
	if(hReadKeyThread == NULL)
	{
		RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateThread failed!\r\n")));
		CloseHandle(KeyBoardhFile) ;
		KeyBoardhFile = INVALID_HANDLE_VALUE ;
		return ;
	}
	RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateThread Success!\r\n")));
	CloseHandle(hReadKeyThread) ;
}

//关闭驱动代码
void CloseKeyboardDriver()
{
	if(KeyBoardhFile != INVALID_HANDLE_VALUE)
	{
		RETAILMSG(1, (TEXT("CloseKeyboardDriver: CloseKeyboardDriver Success!\r\n")));
		CloseHandle(KeyBoardhFile) ;
		KeyBoardhFile = INVALID_HANDLE_VALUE ;
	}
}

//写入驱动代码
void WriteKeyboard()
{
	return ;
}

//读出字节 WINAPI 
DWORD WINAPI ReadKeyBoardThread (PVOID pParam) 
{
	int     status=0;  //为从底层驱动传来的值
	DWORD   actlen;

	LPVOID lpInBuffer;

	while(1)
	{
	     if(KeyBoardhFile == INVALID_HANDLE_VALUE)   //检查驱动是否已打开
			 break;
		 if(ReadFile(KeyBoardhFile, &status, 1, &actlen, NULL) == TRUE)
		 {
//			 RETAILMSG(1, (TEXT("ReadKeyBoardThread: status is 0x%x.\r\n"),status));
			 if(status)
			 {
				 RETAILMSG(1, (TEXT("ReadKeyboardThread: ReadFile Success two!\r\n")));
				 if(status == Key1Value)
				 {
					 KeyCount += 16;
					 WriteFile(KeyBoardhFile, &status, 1, &actlen, NULL) ;
				 }
				 if(status == Key2Value)
				 {
				     KeyCount ++;
					 //if(KeyCount%3)
					    DeviceIoControl(KeyBoardhFile, 10, &lpInBuffer, 1, NULL, 0, NULL, NULL) ; 
				 }
				 //TCHAR buffer[50]; 
                 //wsprintf(buffer, TEXT("the counts of button pushed  %d."), KeyCount); 
				 //MessageBox(NULL, buffer, TEXT("Data Report"), MB_OK | MB_ICONASTERISK); 
				 RETAILMSG(1, (TEXT("ReadKeyBoardThread: KeyCount is 0x%x.\r\n"),status));
			 }
			 else break;
		 }
		 else break;
	}
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -