xinyu_hao
驱动小牛
驱动小牛
  • 注册日期2005-12-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1005分
  • 威望186点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
阅读:1211回复:4

为什么调用InterruptInitialize总是失败

楼主#
更多 发布于:2007-01-09 08:55
  我现在做can总线的驱动,在中断部分调用InterruptInitialize总是失败,下面是我的代码
hEvent=CreateEvent(0,FALSE,FALSE,NULL);
    if(hEvent)
    {
        RETAILMSG(1,(TEXT("CAN:CreateEvent_okaaaaaaaaaaaaaaaaaaaa")));
    }
  
   hCanThread=CreateThread(NULL,
                           0,
                           CanIST,
                           NULL,
                           CREATE_SUSPENDED,
                           &dwThreadID);
   if(hCanThread)
        {
            RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_OKhhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
        }
    else
    {
        RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_FALSEhhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
        return 0;
    }

    dwISTPriority=253;

    if(!CeSetThreadPriority(hCanThread,dwISTPriority))
    {
        RETAILMSG(1,(TEXT("CeSetThreadPriority Failed!!hhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
    }
    if(!InterruptInitialize(SYSINTR_CAN,hEvent,NULL,0))
    {
        RETAILMSG(1,(TEXT("InterruptInitialize Failed!!hhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
    }
    ResumeThread(hCanThread);
前面的几步都没有问题,就是在连接系统中断号和事件的时候失败?
我的其他中断的设置都做了,驱动编译没有问题
请大家帮忙
xinyu_hao
驱动小牛
驱动小牛
  • 注册日期2005-12-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1005分
  • 威望186点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-09 18:59
问题解决了,原来是系统中断号设置的太大了,希望大家不要范同样的错误。
但是又有了一个问题,
 hCanThread=CreateThread(NULL,
                  0,
                        CanIST,
                          NULL,
                          0,
                          &dwThreadID);
  if(hCanThread)
     {
        RETAILMSG(1,(TEXT("CANTHREAT:CREATETHREAD_OKhhhhhhhhhhhhhhhhhhhhhhhhhh\n")));
     }
  提示说CreateThread成功,但是我的CanIST并没有执行,这是为什么啊?
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-09 21:03
你的IST是怎么写的,在函数设置断点跟踪一下。
xinyu_hao
驱动小牛
驱动小牛
  • 注册日期2005-12-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1005分
  • 威望186点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-10 09:02
static DWORD WINAPI CanIST(PVOID pContext)
{

    RETAILMSG(1,(TEXT("CAN:istaaaaaaaaaaaaaaaaaaaa")));
        

        while(1)
            {
               WaitForSingleObject(hEvent,INFINITE);
               RETAILMSG(1,(TEXT("CAN:interrupt_okdsffgdgdgdfgaaaaaaaaaaaaaaaaaaaa")));
               InterruptDone(SYSINTR_CAN);
            }

    return 0;
}
第一条信息就出不来
xinyu_hao
驱动小牛
驱动小牛
  • 注册日期2005-12-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1005分
  • 威望186点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-01-10 11:47
ist能响应了,是线程优先级的问题,我现在把线程优先级设置为250,小于250的都不行,可是我看help说252~255才是开放的,我不知道设成250是不是会对系统有没有影响。
游客

返回顶部