当我们使用EFI模式安装win8,win10的时候,windows安装程序总是先显示一个窗口,让我们选择把OS安装在哪里。在这个界面,我们选择完安装介质的时候,有时候发现并不能顺利点击下一步进行安装。为何?因为这时候,硬盘格式并不满足GPT的要求。我们需要根据windows安装程序的提示,进行新建分区操作。当我们新建一个分区后,发现居然还有其它分区生成。不要生气,埋怨windows安装程序设计不合理,因为这是GPT格式的要求。多出来的分区是ESP,需要做以前MBR分区做的事情。
GPT相关知识可以在UEFI SPEC上查到,讲述得很详细。可以用RW读取硬盘,对照代码解析一个接一个结构体。下面就来捋一下GPT的相关知识。
1. Block协议
这个协议起着承上启下的作用,往上和硬件相关。往下为DISKIO提供接口,让下层程序开始变得与硬件无关。
BlockIO可以由BUS驱动安装,也可以由设备驱动安装。具体要看设备类型。
2. DiskIo协议
这个协议其实是对BlockIo的封装,让使用者从扇区的概念中脱离出来。
3. Partition和GPT
//
// Partition Driver Global Variables.
//
EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding = {
Par