You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
中<br />
看到如下的定义:<br />
UNUSUAL_DEV( 0x04e6, 0x0002, 0x0100, 0x0100,<br />
"Shuttle",<br />
"eUSCSI Bridge",<br />
US_SC_DEVICE, US_PR_DEVICE, usb_stor_euscsi_init,<br />
US_FL_SCM_MULT_TARG ),<br />
然后353 行,us->srb->device->lun 不应该大于us->max_lun,这两个冬冬是什么区<br />
别?us->max_lun 是咱们年轻的时候使用storage_probe 调用usb_stor_Bulk_max_lun()函数来向<br />
usb mass storage 设备获得的最大LUN,比如MAX LUN 等于3,那么咱们这个设备支持的就是4 个LUN,<br />
即0,1,2,3.而us->srb->device->lun 则可以是这四个值中的任一个,看咱们传递进来的命令是要访问<br />
谁<br />
了.但她显然不可能超过MAX LUN.<br />
然后就是359 行了.看到这么一个flag-US_FL_FIX_INQUIRY,这又是us->flags 中众多flag 中的一<br />
个,一些定义于drivers/usb/storage/unusal_devs.h 中的设备有这个flag,事实上,通常大多数设备的<br />
vendor name 和product name 是通过INQUIRY 命令来获得的,而这个flag 表明,这些设备的vendor<br />
name 和product name 不需要查询,或者根本就不支持查询,她们的vendor name 和product name<br />
直接就定义好了,在unusal_devs.h 中就设好了.那么359 行这里这个cmnd[0]是什么?struct<br />
scsi_cmnd 里边有这么一个成员,<br />
79 #define MAX_COMMAND_SIZE 16<br />
80 unsigned char cmnd[MAX_COMMAND_SIZE];<br />
这个数组16 个元素,她包含的就是scsi 命令,要看懂这个条件判断,得先看下边那句<br />
fill_inquiry_response()函数调用.如果大家都没意见的话,我提议咱们下节再接着讲.<br />
最后贴几个设了US_FL_FIX_INQUIRY 这个flag 的设备,这几个都是Sony 的PEG 记忆棒,或者叫记<br />
忆卡,可以用在PDA 里边.drivers/usb/storage/unusual_devs.h 中:<br />
377 /* Submitted by Nathan Babb */<br />
378 UNUSUAL_DEV( 0x054c, 0x006d, 0x0000, 0x9999,<br />
379 "Sony",<br />
380 "PEG Mass Storage",<br />
381 US_SC_DEVICE, US_PR_DEVICE, NULL,<br />
382 US_FL_FIX_INQUIRY ),<br />
383<br />
384 /* Submitted by Mike Alborn */<br />
385 UNUSUAL_DEV( 0x054c, 0x016a, 0x0000, 0x9999,<br />
386 "Sony",<br />
387 "PEG Mass Storage",<br />
388 US_SC_DEVICE, US_PR_DEVICE, NULL,<br />
389 US_FL_FIX_INQUIRY ),<br />
390<br />
128<br />
391 /* Submitted by Frank Engel */<br />
392 UNUSUAL_DEV( 0x054c, 0x0099, 0x0000, 0x9999,<br />
393 "Sony",<br />
394 "PEG Mass Storage",