windows无盘启动技术开发之UEFI(新一代BIOS)引导程序开发之二

by fanxiushu 2023-04-14/18 转载或引用请注明原始作者。
接上文。

上文提到了至少有两种办法制作UEFI的虚拟磁盘驱动。
本文只接收利用BlockIO的方式来构造一个临时用的虚拟磁盘。
之所以说是临时使用,是因为在作为引导程序中,一旦进入到 \EFI\boot\bootx64.efi之后,
控制权就交给了bootx64.efi以及之后的引导程序,我们的引导程序唯一需要在幕后扮演的就是提供虚拟磁盘的IO功能。
这跟传统BIOS下实现大型系统引导的基本规则是一样的。

所以在开发引导程序的时候,不必按照UEFI规范文档那样阐述的,制作符合UEFI规范的UEFI驱动程序,
我们只需要在程序入口里调用 InstallMultipleProtocolInterfaces 函数安装新的BlockIO的PROTOCOL,
并且之后调用ConnectController 函数,让我们新安装的PROTOCOL能被连接上,
能被别的引导程序(其实就是 EFI\Boot\bootx64.efi 等其他引导程序)识别到。

所以在UEFI中制作这么一个临时的BlockIO接口就会显得比较轻松:
定义:
    EFI_BLOCK_IO_MEDIA              Media;
    EFI_BLOCK_IO_PROTOCOL     BlkIo;
   

猜你喜欢

转载自blog.csdn.net/fanxiushu/article/details/130228114