booming
驱动牛犊
驱动牛犊
  • 注册日期2006-08-24
  • 最后登录2010-10-28
  • 粉丝0
  • 关注0
  • 积分101分
  • 威望189点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1664回复:1

请教一个文件传输到usb的效率问题。

楼主#
更多 发布于:2010-03-01 09:26
请教个问题,我要用DeviceIoControl传pc的文件到u盘设备,好像DeviceIoControl一次最大只能传64k,这样导致效率很低,请问,有没有办法提高传输效率呢?
另外,为何每次只能传64K数据呢??
xzyee
驱动牛犊
驱动牛犊
  • 注册日期2005-08-08
  • 最后登录2010-07-01
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-03-03 00:40
DeviceIoControl传输每次都可以指定buffering method模式,我猜想你可能指定用METHOD_BUFFERED方式,该方式I/O Manager会在内部使用system buffer在你的输入缓冲区和输出缓冲区拷贝来拷贝去,效率十分低下吧,DeviceIoControl传输可能是为进行设备电气控制而专用的,不是为大量传输数据设计的。至于64K的限制,难道是因为内部使用ExAllocatePool( IN POOL_TYPE  PoolType,    IN SIZE_T  NumberOfBytes  )分配内存时受到SIZE_T的限制(SIZE_T在32位条件下是64K)?
游客

返回顶部