| 
 | 
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 
 
 
 
 |   
 
 
 
 |