peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1648回复:17

有没有人做过修改PC机的定时器中断的VXD

楼主#
更多 发布于:2003-04-28 19:17
我写了个驱动,其中要把定时计数器中断IRQ0修改成5ms一次
写好后,我在编完应用程序方面的代码并调试时才发现,根本不能用CreateFile加载这个
驱动,错误代码为2,但是默认的目录下确实已有我所要加载的VXD文件,并且它生成的定
义里是允许动态加载的,难道是不能用VTOOLSD的中断类重载中断处理程序?
要怎么解决啊,各位高手,给点提示吧!! :(
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-04-28 20:26
不知道你要干什么。
直接修改8259呢?
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-30 13:26
就是修改PC机定时器8253的通道0的定时时间,原来默认的是55ms中断一次,想把它改成5ms,我VXD已经编好了,只是在应用程序用CreateFile加载它时加载不了,用GetLastError()得到的错误代码是2
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-04-30 15:16
sorry错成8259了。
反正是在98下,直接去写8253,不要什么vxd了。
不过改成5ms的话,系统怕会很不稳定。
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-01 09:25
我之所以要改定时器时间常数,是为了控制用的啊
所以还要重写定时器中断的服务程序,实际上还用到其它中断,但这已经不是讨论的问题了
问题是这个VXD不能被加载,是不是不能用VHardWare类重新定义,对定时器中断虚拟化呢?
我在其它论坛上也问过,别人的意见是VXD可能不行,建议改成WDM
不过,我的驱动已经编好,总觉得应该是有方法,只是不得要领或是有未公开的一些相关知识!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-05-01 12:22
或许用VSharedHardwareInt?
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-02 14:07
不会吧,我用的可是系统板上的定时器
又不是有其它硬件要共用它的中断号
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-05-02 15:56
因为系统定时一定已经有个vxd来管了
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2003-05-03 13:24
想了想,你要把55ms改成5ms?那应该是修改8253来实现,可是我不太明白的是,你做一个响应中断的vxd?在中断里面改8253吗? :o
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-03 19:50
当然是在VXD动态加载时重写8253的定时常数了
在中断服务程序里写入自已要的控制,与应用程序通信的回调函数等
你试试吧,有没有不做过相关的?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2003-05-03 21:06
详细记不清楚了,上次在98下,用VSharedHardwareInt可以挂键盘的1和mouse的12,VHardWare就不行。
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-05-04 09:04
怎么不行?
是不能加载还是??
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2003-05-04 14:28
说了不记得了,好久了 :D
你自己一试就知道了啊,很快啊,我进98不方便了现在。
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-05-05 00:19
我用指定的路径加载,可以加载这个VXD了
不过在应用程序与VXD通信时出错了
就是DeviceIOCtrol函数
比如:
if (!DeviceIoControl(hDevice,FLAGBEGIN,&appsecs0,sizeof(long),NULL,NULL,0,NULL))
{::MessageBox(hWnd,\"数据传送失败\",\"错误\",MB_OK);
   return 0;
}
这里传送就失败了
不知道怎么回事!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2003-05-05 12:09
那用si跟进去看看,是哪句的问题,就知道了啊
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-05-05 16:35
晕,不就是这句吗?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2003-05-05 16:47
我也晕 :D
这是你的app的一句,跟到你的vxd对应的函数去看看啊。
peyoot
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2004-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-05-08 11:04
注意,已经找到原因
不能用指定路径的方法,即使指定,也要在前面加:\\\\\\\\.\\\\
游客

返回顶部