wdm8000
驱动牛犊
驱动牛犊
  • 注册日期2001-06-07
  • 最后登录2005-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1807回复:2

如何直接IO操作处理IOCTL代码?

楼主#
更多 发布于:2001-07-02 09:37
各位朋友,本人在开发一套PCI驱动程序,使用直接IO操作处理IOCTL代码,用来传递大量数据并送回应用层。有时总出现页故障或者页保护错误。请问怎么回事?您焦急的朋友。
吴新安
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-02 15:39
用户态数据在分页内存中,IOCTL_code 的处理在非分页内存中,
这中间数据的交换必须有系统完成。(这个动作是在后台的,对用户是不可见的,但可以理解成有这个动作)
你的方法,好象直接在这两个状态切换,随意交换数据,出问题也就不奇怪了!
wdm8000
驱动牛犊
驱动牛犊
  • 注册日期2001-06-07
  • 最后登录2005-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-03 15:05
感谢您的指导,我用DeviceIoControl发送代码,我把从硬件读的数据写到驱动程序处理代码时的内存映射空间mem.MapToSystemSpace()然后在应用程序层又从定义的输出缓冲区把数据读到用户。一次处理1024个字节时出错的频率高,但一次处理256个字节时出错的频率较低。我该如何?
吴新安
游客

返回顶部