zzlng_xlb
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2006-09-01
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望18点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1335回复:3

中断共享问题--急

楼主#
更多 发布于:2005-08-01 10:32
  请问高手:
我在中断共享的时候,为什么不行,请帮我分析:
           HANDLE g_IsrHandle = LoadIntChainHandler( g_szIsrDll, g_szIsrHandler, (BYTE)Irql );
                GIISR_INFO Info;
       Info.SysIntr = 0X21 ;
       Info.CheckPort = TRUE;
       Info.PortIsIO = FALSE;
                Info.UseMaskReg = FALSE;
       Info.PortAddr = (DWORD)g_pPhysicalAddress + 0x0A2;      
       Info.PortSize = sizeof(WORD);
       Info.Mask = 0x00F7;
           if (!KernelLibIoControl(g_IsrHandle, IOCTL_GIISR_INFO, &Info, sizeof(Info), NULL, 0, NULL))
      
       pService->Interrupt_ID = Info.SysIntr;
       InterruptDisable(pService->Interrupt_ID);
                pService->Event = CreateEvent(NULL, FALSE, FALSE, NULL);
       if(!InterruptInitialize(pService->Interrupt_ID, pService->Event, NULL, 0))
       {
              OutputDebugString ( TEXT("InterruptInitialize failed\n") );
              return FALSE;
       }

          
       在ulRet = NKCallIntChain(ucCurrentInterrupt)无论我设置IRQ为何值返回都是SYSINTR_CHAIN,这说明中断共享不成功。请高手指点!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-01 17:09
你的mask是要检测哪位?写反了吧
根据地的兄弟们,团结就是力量
zzlng_xlb
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2006-09-01
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望18点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-02 15:00
我这么用都不行
Info.PortAddr = (DWORD)g_pPhysicalAddress + 0x0A2;      
Info.UseMaskReg =TRUE;
Info.MaskAddr = (DWORD)g_pPhysicalAddress + 0x0A2;
请问这是为什么,按道理来说这样是至少会有所响应吧,但是就是没有,请问版主我应该怎么调试?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-02 15:54
Info.UseMaskReg = FALSE;

然后
Info.Mask = ~0x00F7;(这个才是关键三)你是不是要检查第一位?
根据地的兄弟们,团结就是力量
游客

返回顶部