royal_wsf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3660回复:20

请教如何在windows2000下操作CMOS时钟中断

楼主#
更多 发布于:2004-05-31 17:35
   请教各位高手,我在2000驱动中需要使用CMOS时钟中断,我的程序可以进入中断服务例程一次,然后系统很快就会死机,猜测是中断例程没有返回,或者中断屏蔽位没有清除。请教如何操作,先谢谢了!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-31 22:58
一次正常进行了?
是不是你的中断修改了CMOS,导致了硬件中断(也包括异常等),从而出了问题?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
royal_wsf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-01 08:41
    我用IoConnectInterrupt成功后,程序能够进入中断服务例程
一次。刚开始我没有修改CMOS(准备改,但是第一步没完成,呵呵)。我看在vxd中,需要在中断服务例程中调用VPICD_Phys_EOI使
VPICD清除中断标志,不知道是不是这个原因?而且我也不知道在
2000下如何操作!
yonghong204
驱动牛犊
驱动牛犊
  • 注册日期2003-12-10
  • 最后登录2010-12-22
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望80点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-01 17:47
能不能上传你的原程序,以便分析
royal_wsf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-02 10:12
    我用IoConnectInterrupt连接中断前,没有屏蔽该中断,也没有申请该中断资源。
     mapedVector = HalGetInterruptVector(
         Isa,
 0,
 IRQ,
 IRQ,
 &Irq,
 &affinity);

ntStatus = IoConnectInterrupt(
 &DeviceExtension->InterruptObject,
 MarkIsr,
 DeviceExtension,
 NULL,
 mapedVector,
 Irq,
 Irq,
 Latched,
 TRUE,
 affinity,
 FALSE);
if(!NT_SUCCESS(ntStatus))
{
KdPrint((\"Connect interrupt error.\\n\"));
}
return ntStatus;
    中断服务例程什么都不作,只打印
  
BOOLEAN MarkIsr(IN PKINTERRUPT interruptObject, IN OUT PVOID Context)
{
PMARK_EXTENSION DeviceExtension = (PMARK_EXTENSION)Context;
if(DeviceExtension->bOnInterrupt)
{
KdPrint((\"Enter cmos interrupt.\\n\"));
}
    ReadCMOS(STATREG_C);
return TRUE;
}

   现在进入中断没有问题,但是程序运行一会系统就会挂,实在是
想不到办法了,求救!
royal_wsf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-03 08:48
   是不是在接管该中断前要先屏蔽该中断?
yonghong204
驱动牛犊
驱动牛犊
  • 注册日期2003-12-10
  • 最后登录2010-12-22
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望80点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-04 23:27
可以在中断结束时写中断控制字端口0xa1或0x21,告诉系统中断已结束,然后就可以开始下一次中断
sysdigger
驱动牛犊
驱动牛犊
  • 注册日期2004-06-07
  • 最后登录2004-07-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-07 16:16
可以vxd中访问,我做多时钟中断控制访问端口的驱动网上搜索可以找到DEMO
royal_wsf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-10 11:11
    98下可以用VPICD处理虚拟中断,也做过,但是不知道2000下
怎么安全的处理时钟中断。
    现在的中断处理服务程序能够循环进入,但是系统很快就会
挂了,修改0xa1|0x21没试过。
xmtanglyj
驱动牛犊
驱动牛犊
  • 注册日期2004-06-12
  • 最后登录2009-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-15 08:53
请问一下你的开发环境是直接使用DDK,还是利用了DriverStudio??
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-15 13:58
请问一下你的开发环境是直接使用DDK,还是利用了DriverStudio??

从他的代码来看肯定是DDK了。
不知楼主有你有相应的硬件支持吗?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-15 13:59
我不是只CMOS,是有没有除PC机以外的其他卡支持。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-06-15 14:00
可以在中断结束时写中断控制字端口0xa1或0x21,告诉系统中断已结束,然后就可以开始下一次中断
 

怎么到写控制器0xA1或0x21的?
你从什么资料知道的呢?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
xmtanglyj
驱动牛犊
驱动牛犊
  • 注册日期2004-06-12
  • 最后登录2009-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-06-17 10:36
我的程序挂接7号中断没有问题,可是挂接中断8时总是失败,
IOConnectInterrupt返回的Status总是失败,请教楼主及各位大侠,是不是在挂接中断8前还要做一些“特殊的处理”???

谢谢!


――――――急呀!!

xmtanglyj
驱动牛犊
驱动牛犊
  • 注册日期2004-06-12
  • 最后登录2009-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-06-17 21:53
楼主呀,你能非常“确定”你挂接2000下的 IRQ8成功了吗?我现在挂接7号没有问题,可是8,3都出错,看到网上很多人说2000下的挂接是“不可能”的,我实在需要你的支持和“肯定”啊!!

――――不好意思,实在是急啊!
royal_wsf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-06-23 09:52
    我被这个中断折磨了好些天,目的是为了节省一块时钟板。机器
上只有一个ISA槽,有一块一定得用的ISA板,是D/A的,呵呵。我
查了一些厂家的信息,有4路D/A且带时钟的卡没找到,便宜又带
时钟且是PCI的卡很难找阿,不知哪位大侠有信息提供阿!
    我挂接8号中断肯定是挂上了的,而且修改其响应周期也没问
题,最小是122us左右,不死机(呵呵),但是机器时间会跑的飞
快,且令我纳闷的是在有的机器上还改不了CMOS,有CMOS保护跳线
的去掉跳线也不行。
xmtanglyj
驱动牛犊
驱动牛犊
  • 注册日期2004-06-12
  • 最后登录2009-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-06-23 09:58
能把你的程序给我一份学习一下吗?lyj_7@sina.com.cn

――非常不好意思地说。

我现在也打算使用外部中断源的方式,找到个PCI_8554不知道对不对头,这方面我刚刚介入,希望多多指教!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-06-23 10:03
   我被这个中断折磨了好些天,目的是为了节省一块时钟板。机器
上只有一个ISA槽,有一块一定得用的ISA板,是D/A的,呵呵。我
查了一些厂家的信息,有4路D/A且带时钟的卡没找到,便宜又带
时钟且是PCI的卡很难找阿,不知哪位大侠有信息提供阿!
    我挂接8号中断肯定是挂上了的,而且修改其响应周期也没问
题,最小是122us左右,不死机(呵呵),但是机器时间会跑的飞
快,且令我纳闷的是在有的机器上还改不了CMOS,有CMOS保护跳线
的去掉跳线也不行。

你修改了CMOS,系统时钟当然要变了。
你连CMOS中断时是否需要先屏蔽CMOS中断?
是不是直接对0x21和0xA1操作控制中断控制器的?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-06-23 10:06
我的程序挂接7号中断没有问题,可是挂接中断8时总是失败,
IOConnectInterrupt返回的Status总是失败,请教楼主及各位大侠,是不是在挂接中断8前还要做一些“特殊的处理”???

谢谢!


――――――急呀!!

 


IRQ7可以挂吗?这是硬件使用了的两个中断控制器是通过7来连接的吧,难道不是这样的?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
royal_wsf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-06-23 10:49
    开始我认为是需要屏蔽的,现在也这样认为,呵呵。
但我也不知道那位大侠提供的0xA1和0x21怎么改,只好
自己想着来。
    我看书上说的好像是IRQ2(or 3)用来连接两个
中断控制器的,我现在用的ISA时钟卡就是7,呵呵。
上一页
游客

返回顶部