?? extkey.cpp
字號:
// ExtKey.cpp : 定義 DLL 應用程序的入口點。
//
#include "stdafx.h"
#include <windows.h>
#include <ceddk.h>
#include "bsp.h"
volatile static DWORD intr_count = 0;
HANDLE gIntrEvent = NULL;
UINT IntrThreadProc(LPVOID);
BOOL WINAPI
DllMain(HANDLE hInstDLL, DWORD dwReason, LPVOID lpvReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
//RETAILMSG(1, (TEXT("***ExtKEY:DLL_PROCESS_ATTACH\n")));
break;
case DLL_THREAD_ATTACH:
//RETAILMSG(1, (TEXT("***ExtKEY:DLL_THREAD_ATTACH\n")));
break;
case DLL_THREAD_DETACH:
//RETAILMSG(1, (TEXT("***ExtKEY:DLL_THREAD_DETACH\n")));
break;
case DLL_PROCESS_DETACH:
//RETAILMSG(1, (TEXT("***ExtKEY:DLL_PROCESS_DETACH\n")));
break;
}
return TRUE;
}
DWORD KEY_Init(DWORD dwContext)
{
RETAILMSG(1, (TEXT("***ExtKEY: KEY_Init\r\n")));
gIntrEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if(gIntrEvent)
{
if( InterruptInitialize(SYSINTR_EXTKEY, gIntrEvent, NULL, 0) )
{
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);
if( CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)IntrThreadProc, NULL, 0, NULL))
{
RETAILMSG(1, (TEXT("***ExtKEY: KEY_Init CreateThread OK\r\n")));
return TRUE;
}
}
CloseHandle(gIntrEvent);
}
RETAILMSG(1, (TEXT("***ExtKEY: KEY_Init fail\r\n")));
return FALSE;
}
BOOL KEY_Deinit(DWORD hDeviceContext)
{
RETAILMSG(1, (TEXT("***ExtKEY: KEY_Deinit\r\n")));
return TRUE;
}
DWORD KEY_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode)
{
RETAILMSG(1, (TEXT("***ExtKEY: KEY_Open\r\n")));
return TRUE;
}
BOOL KEY_Close(DWORD hOpenContext)
{
RETAILMSG(1, (TEXT("***ExtKEY: KEY_Close\r\n")));
return TRUE;
}
BOOL KEY_IOControl(DWORD hOpenContext,
DWORD dwCode,
PBYTE pBufIn,
DWORD dwLenIn,
PBYTE pBufOut,
DWORD dwLenOut,
PDWORD pdwActualOut)
{
return TRUE;
}
void KEY_PowerDown(DWORD hDeviceContext)
{
//RETAILMSG(1, (TEXT("***ExtKEY: KEY_PowerDown\n")));
}
void KEY_PowerUp(DWORD hDeviceContext)
{
//RETAILMSG(1, (TEXT("***ExtKEY: KEY_PowerUp\n")));
}
DWORD KEY_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
if(Count >= sizeof(DWORD))
{
*((PDWORD)pBuffer) = intr_count;
return sizeof(DWORD);
}
return 0;
}
DWORD KEY_Seek(DWORD hOpenContext, long Amount, DWORD Type)
{
return 0;
}
DWORD KEY_Write(DWORD hOpenContext, LPCVOID pBuffer, DWORD NumberOfBytes)
{
if(NumberOfBytes >= sizeof(DWORD))
{
intr_count = *((PDWORD)pBuffer);
return sizeof(DWORD);
}
return 0;
}
UINT IntrThreadProc(LPVOID ptr)
{
while(1)
{
WaitForSingleObject(gIntrEvent, INFINITE);
intr_count++;
RETAILMSG(1, (TEXT("***ExtKEY: intr_count=%d\r\n"), intr_count));
Sleep(500);
InterruptDone(SYSINTR_EXTKEY);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -