huminan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3189回复:12

为什么我的NdisMRegisterInterrupt()函数总是返回failure

楼主#
更多 发布于:2003-07-11 10:53
我用的是CE 4.1,PXA250,在MiniportInitialize过程中调用了NdisMRegisterInterrupt()函数,但老是返回failure,调试信息如下:
43c860ee TID:43c8df36 ***NDIS*** (a, 474)
4294772663 PID:43c860ee TID:43c8df36 ==>NdisMRegisterInterrupt: Miniport 00042798 Vector 26
4294772665 PID:43c860ee TID:43c8df36 0x83c8d860: NDIS: ERROR - InterruptInitialize(26, 63c4c402) failed
4294772665 PID:43c860ee TID:43c8df36 **************+OEMInterruptDisable: SYSINTR_ETHER.
4294772666 PID:43c860ee TID:43c8df36     NdisMRegisterInterrupt: IoConnectInterrupt failed on Interrupt Level:0, Vector: 1a
4294772667 PID:43c860ee TID:43c8df36 ***NDIS*** (a, 645)
4294772667 PID:43c860ee TID:43c8df36 <==NdisMRegisterInterrupt: Miniport 00042798, Status c0000001
请问主要和什么有关,是内核里的InterruptEnable,InterruptDisable有关?还是和其它的有关?
huminan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-14 11:23
首先谢谢您的回信!
我在Platform.reg里已经定义了:
\"InterruptNumber\"=dword:1A ;  (SYSINTR_ETHER = SYSINTR_FIRMWARE + 10)
在小端口初始化过程中提取配置信息InterruptNumber,将InterruptNumber作为NdisMRegisterInterrupt()的一个输入量,
但仍然不对。
不知我的设置对不对?

[编辑 -  7/14/03 by  huminan]
huminan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-14 15:49
先给10分,我正在进行修改,还不知行不行。
我本来想找一个IOCTL_HAL_REQUEST_SYSINTR的相关例程来参考,但没找到。
我直接在MiniportInitialize()里加入如下操作:
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &dwSysIntr_ETHER,sizeof(dwSysIntr_ETHER), pSysIntr, sizeof(*pSysIntr), NULL);
不知这样行不行,你能再给点参考吗?
先谢了。
huminan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-15 09:55
刚好我的也是ISA,关键是该函数是如何被调用的?
我在NdisMRegisterInterrupt函数之前增加了一个KernelIoControl(IOCTL_HAL_TRANSLATE_IRQ,,,,,)函数和一个InterruptInitialize函数,发现都运行正确,但NdisMRegisterInterrupt仍然返回和原来一样的错误,不知如何调用OEMTranslateIrq,我的NdisMRegisterInterrupt才能返回success。
huminan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-15 16:45
在leo_cyl的帮助下问题已经初步解决,表示衷心的感谢!!!
huminan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-16 14:47
加入了该段代码之后,新的问题出现了:
读写BYTE和ULONG类型数据时发生数据中断(Data abort)
???
游客

返回顶部