lft_8888
驱动牛犊
驱动牛犊
  • 注册日期2007-09-06
  • 最后登录2010-01-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1063回复:3

关于键盘中断

楼主#
更多 发布于:2008-06-11 11:34
各位好。我在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要想使用,要包含什么头文件呢?
谢谢各位了。
xyj8303
驱动小牛
驱动小牛
  • 注册日期2007-05-28
  • 最后登录2009-04-01
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望137点
  • 贡献值0点
  • 好评度103点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-06-12 16:57
一步步调,先看进中断了没有
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-06-13 00:08
看看MDD层的代码。貌似InterruptDone(SYSINTR_KEYBOARD);
不需要你在PDD来做。。微软有很多sample。照着写一个就OK了,比较easy!
做一个出色的程序员!
lft_8888
驱动牛犊
驱动牛犊
  • 注册日期2007-09-06
  • 最后登录2010-01-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-06-13 11:18
谢谢楼上两位。xyj8303   如何逐步调试呀?应该是进中断了,要不为什么线程里的计数器能加一呢。
我在D:\WINCE500\PUBLIC\COMMON\OAK\CSP\X86\INC\oalintr.h里自己定义中断号,然后修改了 OEMInterruptDone等函数。然后重新sysgen。可是中断总不响应。不知道为什么。
游客

返回顶部