wb233
驱动牛犊
驱动牛犊
  • 注册日期2004-07-24
  • 最后登录2009-07-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:954回复:1

80分求助! 很急!

楼主#
更多 发布于:2004-10-20 15:53
小弟目前在做基于DSP的驱动程序,利用DS中的DriverNetWorks进行实现,因为硬件要实现基本的网络传输功能。目前在实现与上层应用程序通信时出现了问题,按照帮助文档中的说明,我在驱动程序中注册了wdm接口,上层应用程序利用此接口通过DeviceIoControl()进行与驱动程序的通讯,然而在驱动中定义的wdm中static NTSTATUS IoDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
    此函数为静态成员函数,
而要实现驱动与硬件的通讯,又必须在驱动中声明
KNdisResource<CmResourceTypeMemory> Memory0(request,0);
KNdisResource<CmResourceTypeMemory> Memory1(request,1);

TRACE("Ti6205Adapter::Memory0 Size is 0x%X\n",Memory0.Length());
TRACE("Ti6205Adapter::Memory1 Size is 0x%X\n",Memory1.Length());

KNdisResource<CmResourceTypeInterrupt> Int(request);
TRACE("Ti6205Adapter::Interrupt is 0x%X\n",Int.Level());
类数据成员Memory0和Memory1为非静态的,(他们用来访问具体的硬件)

在由上层应用程序通过驱动程序操纵硬件工作时,就出现问题了。由于静态成员函数不能调用非静态数据成员,在调用函数时不能通过Memory0和Memory1访问硬件了。
 小弟目前非常着急,恳请热心的大侠们帮一把,多谢了,高分奉上!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-25 17:32
你可将需要的资料放到DeviceObject的扩展信息中,或使用全局信息等都可以实现你的要求
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
游客

返回顶部