zhyxue
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:898回复:0

请教driveworks使用tdiclient的问题

楼主#
更多 发布于:2004-11-08 16:17
  使用driverworks向导建立了一个简单的驱动,就是读写字符(设备是不存在的)包括了tdi client的支持,在serialWrite函数中希望吧用户层传递的字符用网络发送出去,使用了函数kstreamsocket::send(),发现如果发送字符少的话,可以成功,如果发送字符多的话,send函数返回错误,如果系统包括了on_sendComplete函数的话,还能导致系统崩溃,不知道是什么原因?
   与此相关的一个问题是,即使发送成功了,能保证发送的字符恰恰等于send函数中指定的字符数吗?比如send参数为100个字符,如果on_sendComplete返回的是80呢?剩余的20个字符采用什么策略呢?丢弃吗?
   我的想法是建立一个环形缓冲区,在serialWrite函数中只是执行把用户层数据copy到缓冲区中的工作,然后建立一个类似线程一样的东西(kernel mode下可行吗?怎么做啊?),一直工作,只要环形缓冲有数据,它就调用send函数发送数据,由on_sendComplete函数根据发送成功的数据来修改缓存区的指针,这样可以吗?
游客

返回顶部