yushui213
驱动小牛
驱动小牛
  • 注册日期2006-04-17
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分1015分
  • 威望115点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
阅读:2189回复:5

Linux上虚拟机的问题!!(急)

楼主#
更多 发布于:2007-10-12 18:50
大家好!
我的问题如下:

我是在linux系统上(FC6.2)安装了一个虚拟机VMware,虚拟机上安装了Windows XP 的OS。
然后我在这个虚拟机上的XP下运行我做的一个USB功能程序。这个USB功能程序很简单,就是读写我自己做的USB设备(USB功能驱动也是自己写的)。

USB设备采用端点1作为读写端口,等时模式(isochrous),每个帧的大小为64B。

如果是运行在普通机器(就是非虚拟机)的XP系统下,我的程序可以采用
WriteFile(.. ,  ...,  1920, ...)这个API函数进行USB数据的写(其他参数省略,1920表示一次读写的数据大小,单位为B),而且写入的数据可以达到1920B。

但是,如果我的程序运行在虚拟机上的XP系统下,上面这个API函数执行就不行了,写入的数据只是为0B。
然后,我把1920这个参数改了,发现以下规律:
凡是这个参数<= 64的,这个API函数都可以写入指定的数据大小,但是,如果这个该参数>64,则写入的数据都是0。


请问各位大大,
这是什么原因?
为何虚拟机与普通机有这个差别(装的XP系统都是同一张盘)?
我该如何解决呢?

谢谢啊

急,希望路过的给顶个,斑竹给帮个忙!!
万分感谢!
wfjcomeon
驱动牛犊
驱动牛犊
  • 注册日期2006-03-19
  • 最后登录2007-12-18
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-10-13 18:48
linux &unix下的包大小和windows下的不一样,既然64可以,你就可以做个循环啊
yushui213
驱动小牛
驱动小牛
  • 注册日期2006-04-17
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分1015分
  • 威望115点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-10-13 20:11
楼上的大大,但是在虚拟机上的XP系统,调用WriteFile函数也是要时间的,如果一次只传输64B,时间上根本来不及的,循环也一样要花时间(好像在Windows下调用WriteFile需要16ms的时间)
yushui213
驱动小牛
驱动小牛
  • 注册日期2006-04-17
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分1015分
  • 威望115点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-10-19 16:47
没有其他的大大遇到过这个问题么?

前天又做了个实验,在XP系统上装了个VMware,虚拟机里又装了一个XP的操作系统
这样我在Linux主机中遇到的问题就不存在了。
也就是说,如果主机是XP,虚拟机也是XP,则我的设备和程序在正常XP系统或者虚拟机的XP系统都能一样的应用。
但是,如果主机是Linux,而虚拟机是XP,则我的设备和程序就工作的不一样了。这种情况下:正常XP系统中,我的程序可以调用API,WriteFile一次性写入1920个字节;而在虚拟机的XP系统中,我的程序只能调用API,WriteFile一次性写入64(或者低于64)个字节的数据,大于64个字节的写操作都是无法成功写入。


请问各位大大,有没有遇到过这个问题呢?
大家帮帮忙
斑竹帮帮忙
谢谢!!
caorr
驱动牛犊
驱动牛犊
  • 注册日期2005-03-24
  • 最后登录2007-10-24
  • 粉丝1
  • 关注1
  • 积分131分
  • 威望19点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-22 12:04
VMware是什么版本?USB是2.0还是1.1?
VMware对USB2.0支持并不好,尤其是ISO端点。
甚至在VMware WorkStation6.0中,VMware还不能很好的支持USB2.0的ISO。
yushui213
驱动小牛
驱动小牛
  • 注册日期2006-04-17
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分1015分
  • 威望115点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-23 12:10
谢谢楼上的大大!!

我把我的环境汇报如下:
VMware是6.0的
USB主机端口支持2.0,不过我的设备是1.1的
端口传输的类型是用ISO端点

但是如果是在XP的OS上安装VMware虚拟机,虚拟机上装XP,我的设备通信就正常了。
这是怎么回事呢?
麻烦你了。
游客

返回顶部