这个问题现在解决了,大家也没有回答的,不知道是没有遇到过这样的问题,还是惜字如金。
现在把我解决的方法说一下,给以后还有遇到我真类问题的朋友有个借鉴。不过因为这是我误打误撞的解决的,不知道解决的是否有理论根据,此方法算个参考吧,以免误导各位,但我这个方法的确解决了上述问题。
先说一下前序:前段时间在开发枚举代码过程中,两个USB同时查到电脑上,PC就蓝屏,后来发现在U盘在枚举的过程中,产品序列号描述符在代码里固定成了一个值,当我把这个产品序列号描述符去掉后(在设备描述符里把产品序列号描述符索引设置为0就表示没有产品序列号),此时PC系统就会给U盘的产品描述符自动分配一个值,这样多个U盘同时插入PC就不再蓝屏了,也就是说两个U盘在厂商描述符、产品描述符一样的同时,如果再设置产品序列号描述符一样,就会导致PC蓝屏。
然后,就是现在楼上提问的问题了,我现在需要做一个CDROM+U盘,设置两个逻辑单元(最大逻辑单元返回值设置为1)时,只出现一个盘符,死活不出现两个盘符,在坛子里提问也没有人回答,死憋着自己调试摸索,又误打误撞的,当我恢复了原来设置的产品序列号描述符后,竟然奇迹的出现了CDROM+U盘图标,当然中间有好多调试过程,此处就省略了。那有人问,设置了产品序列号描述符后,再出现蓝屏怎么办?好办,产品序列号描述符返回值用随机数代替,我取了16字节随机数,来表示产品序列号描述符,这样产品序列号描述符再出现一样的概率是16的16次方分之一,概率就很小了。
如图所示:
|