oyhaiou
游客
游客
阅读:2034回复:2

急用,请帮忙,谢谢!

楼主#
更多 发布于:2001-05-15 18:11
我在写一个语音卡的Win98下驱动程序毕业设计遇到了一个问题,很关键,捆扰了很久,在此,特向站长求教!
    问题大概市这样的:
    主要是根据调节语音卡上的物理起始地址,读出卡中的某标志积存器的值,来检测卡是否被系统识别。然后,往卡中写入数据,来实现对语音卡的控制。我的做法大概是,通过Ring3下的DeviceIOCtrol()函数将物理起始地址传入VXD的P->dioc_inbuf里面,再通过VXD的MapPhysToLinear()转化成线形地址返回给Ring3下的应用程序,然后在应用程序下,根据返回的线形地址在GDT中找出在内存中的段基值,然后根据此段基值来实现对内存的直接读写!
    但是遇到的问题是读不出内存里的值,或是不正确,有时甚至使系统直接重新启动。
    我直接用SOFT-ICE的Peek命令却可以直接读出正确的语音卡标志积存器值,所以恳请站长能够提供通过VXD实现对内存进行读写的代码,而不是通过中断方式在应用程序断实现Ring3到Ring0的转换而实现读写那种!
  急用,请帮忙,谢谢!
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2001-05-15 19:33
可以不发重帖吗?超过3个就会封ip的。
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
wuqix
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2008-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-05-15 23:56
好象理论上有问题,Ring3不可以访问核心虚地址,你对MapPhysToLinear()的理解可能有误,其返回的地址应该只是Ring0可用。你用这个地址在Ring0读写个结果,再把结果返回Ring3试试。

以上只是理论,我只做NT下的驱动,9X下WDM还可以说说,若回答错了,麻烦你告诉我
游客

返回顶部