fanwei7
驱动牛犊
驱动牛犊
  • 注册日期2001-06-26
  • 最后登录2002-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2738回复:9

关于DeviceIoControl

楼主#
更多 发布于:2001-10-10 15:36
我使用的是:EZ-USB 开发板(芯片是AN2131QC)。已经将所给例子改成一个文件传输的程序。出现以下问题,希望给予帮助,给分决不吝惜。

1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)

2) 但我这个例子执行时:速度既然达到了1M字节/秒,但这肯定有问题,那位高手有建议?(10分)

3) 目前我只是使用了一个端点,如何使用多个端点提高速率?特别时双缓存技术?(20分)
共享的资源才能更快的提高
bzxu
驱动牛犊
驱动牛犊
  • 注册日期2001-04-16
  • 最后登录2002-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-11 00:16
> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)
I think it's because 65535 is the biggest integer in a word,
i.e. 65535=0xffff, while 65536 = 0x10000 is beyond one word.
fanwei7
驱动牛犊
驱动牛犊
  • 注册日期2001-06-26
  • 最后登录2002-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-10-11 09:35
> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)
 
>开始,我也以为这是在程序中将该变量定义位WORD的缘故,但后来发现DeviceIoControl 最大一次只允许传输65535字节。这是不是要求我把一个大文件分割成小文件时:只能分成若干个65535,而不是65536,但文档中的64K作合解释?

请高手指点!
共享的资源才能更快的提高
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-10-11 13:19
[QUOTE]原本由 fanwei7 发表
[B]> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)
 
>开始,我也以为这是在程序中将该变量定义位WORD的缘故,但后来发现DeviceIoControl 最大一次只允许传输65535字节。这是不是要求我把一个大文件分割成小文件时:只能分成若干个65535,而不是65536,但文档中的64K作合解释?

请高手指点! [/B][/QUOTE]
有driver的源代码吗?可以自己改啊!
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-10-11 13:30
别的问题我不会,不过64k就是65535,你就不要钻牛角尖了。。。


“萎软”,是Microsoft的小名!
fanwei7
驱动牛犊
驱动牛犊
  • 注册日期2001-06-26
  • 最后登录2002-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-10-11 13:57
KDriver:  你怎么这么肯定。
 
如果如此:是不是将一个大文件分割成小文件是,也必须是若干个
65535字节。
共享的资源才能更快的提高
fanwei7
驱动牛犊
驱动牛犊
  • 注册日期2001-06-26
  • 最后登录2002-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-10-11 15:34
请大家指教
共享的资源才能更快的提高
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-10-12 14:24
[QUOTE]原本由 fanwei7 发表
[B]我使用的是:EZ-USB 开发板(芯片是AN2131QC)。已经将所给例子改成一个文件传输的程序。出现以下问题,希望给予帮助,给分决不吝惜。

1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)

2) 但我这个例子执行时:速度既然达到了1M字节/秒,但这肯定有问题,那位高手有建议?(10分)

3) 目前我只是使用了一个端点,如何使用多个端点提高速率?特别时双缓存技术?(20分) [/B][/QUOTE]

兄弟,我真服了你,都一两个月了,还在钻研这个哪?
1,EZ-USB General Purpose Driver Specification,page 12:
  5.2.2 IOCTL_EZUSB_BULK_WRITE
  ......
  The transfer size must be less than 64KB.
  .....
  只少了你一个Byte,不至于这样紧张吧,:),除了分割成小块好象别无它法。
2,为什么这么肯定是个问题?万一是真的不是很好吗?
3,既然有双缓存,不用就浪费了。端点多了要晕头。
4,我记得你以前要过程序,请把你的信箱告诉我,我把我的发给你,东西简陋了点,不好意思,麻烦你看看我弄的对不对,是不是和你一样的,拜托拜托。asgump@163.com
5,God bless you.

[sunkai 编辑于 2001-10-12 14:42]
wgd
wgd
驱动牛犊
驱动牛犊
  • 注册日期2001-08-29
  • 最后登录2002-04-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-10-13 13:57
> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)
>1)首先,这给程序中将该变量定义位WORD的缘故有关。
   其次,我们所说的文件大小是64K,而在计算机内计数的起始值为0,故一个WORD的最大值为65535。如果你选择从1开始,那么64K的容量空间应该在65536,而不是65535。
Gordon
fanwei7
驱动牛犊
驱动牛犊
  • 注册日期2001-06-26
  • 最后登录2002-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-10-15 10:04
谢谢大家指点!散分!
共享的资源才能更快的提高
游客

返回顶部