|
楼主 |
发表于 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
|
|