|  | 
3#
 
 
 楼主|
发表于 2020-8-8 10:01:35
|
只看该作者 
| 本帖最后由 wuwuzz 于 2020-8-8 12:17 编辑 
 谢谢wintoflash大佬!我看了PDF文档,又对照有兴趣的代码片段揣摩了一番,
 
 您的想法很对:
 “PI规范没有明确规定磁盘必须满足什么要求...
 读写磁盘方面...内部实现是什么样那就不一定了。”
 
 现在可以进一步了,内部实现是需要CHS的。从流出的代码看,
 内部的大致情况是,USB存储设备驱动涉及2个层面:
 
 一、efiusbmass
 EFI USB Mass Storage Driver,作用是:Installs BlkIo protocol on a USB Mass Storage device
 
 二、usbmass
 USB Mass Storage support implementation,并作为runtime存在
 
 这里有许多重要的子过程:
 USBMass Identify DeviceType()、 USBMass Get Device Parameters()、
 USBMass Check Device Ready()、 USBMass Update Device Geometry()等,
 与CHS有千丝万缕的联系,   尤其是USBMass Update Device Geometry()。
 
 在这里,C*H*S被用作计算MaxLba(总扇区数)的方法之一。
 
 并且,MaxLba还会在Install BLOCK_IO protocol时被引用,如下
 MassDev->Media->LastBlock = DevInfo->dMaxLba-1;   // LastBlock is 0-based
 
 
 
 
 | 
 |