阅读:1063回复:3
关于键盘中断
各位好。我在init里创建了一个线程。
DWORD SPL_Init(DWORD dwContext) { RETAILMSG(1, (TEXT("::: SPL_Init.\r\n"))); /* 提示驱动加载 */ handle1= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,NULL); if (handle1) { DEBUGMSG(1, (TEXT("::: CreateThread is successful.\r\n"))); } g_mmcounter=0; return 1; /* 返回一个不为零的数表示成功 */ } DWORD WINAPI ThreadProc(PVOID pArg) { DEBUGMSG(1, (TEXT("::: ThreadProc is working.\r\n"))); // g_mmcounter=4; gWaitEvent=CreateEvent(NULL,FALSE,FALSE,NULL); // CeSetThreadPriority(handle1,3); if (!(InterruptInitialize(SYSINTR_KEYBOARD,gWaitEvent,0,0))) { DEBUGMSG(1, (TEXT("::: InterruptInitialize is failed.\r\n"))); } while(TRUE) { if (WaitForSingleObject(gWaitEvent,INFINITE) == WAIT_OBJECT_0) { g_mmcounter++; } else { CloseHandle(gWaitEvent); return 0; } InterruptDone(SYSINTR_KEYBOARD); //SetEvent(gWaitEvent); } return 1; } 想获取键盘SYSINTR_KEYBOARD的中断然后计数。 可结果没出来。一直是0.请问是哪里处问题了 ? SYSINTR_KEYBOARD要想使用,要包含什么头文件呢? 谢谢各位了。 |
|
沙发#
发布于:2008-06-12 16:57
一步步调,先看进中断了没有
|
|
板凳#
发布于:2008-06-13 00:08
看看MDD层的代码。貌似InterruptDone(SYSINTR_KEYBOARD);
不需要你在PDD来做。。微软有很多sample。照着写一个就OK了,比较easy! |
|
|
地板#
发布于:2008-06-13 11:18
谢谢楼上两位。xyj8303 如何逐步调试呀?应该是进中断了,要不为什么线程里的计数器能加一呢。
我在D:\WINCE500\PUBLIC\COMMON\OAK\CSP\X86\INC\oalintr.h里自己定义中断号,然后修改了 OEMInterruptDone等函数。然后重新sysgen。可是中断总不响应。不知道为什么。 |
|