我正在尝试向UEFI中的协议添加过滤器驱动程序,这意味着在层次结构中使用该协议的每个人最终都会通过我。
我知道我需要将我的驱动程序添加到相关的设备路径 - 虽然不知道如何。更重要的是,它如何与已连接到设备的任何句柄一起使用? (如果我理解正确,我需要使用BY_DRIVER | EXCLUSIVE将我的驱动程序连接到设备,一旦我将自己的驱动程序连接到设备路径并使用ConnectController和我的驱动程序句柄,UEFI应该自动连接任何支持句柄给我)
我希望有人知道如何添加一个驱动程序,作为特定协议的过滤器驱动程序(或不同的语义层驱动程序?)。
真的,真的感谢任何给定的帮助,因为我在其他任何地方都没有找到任何帮助。
答案 0 :(得分:0)
这并不复杂。您唯一需要做的就是重新安装您想拦截的协议。
我们以EFI_PCI_IO_PROTOCOL为例:
LocateHandleBuffer()
HandleProtocol()
在每个句柄上获取原始PCI IO接口,将其记录在您可能想要在新协议接口内调用的位置。gBS->ReinstallProtocolInterface
重新安装PCI IO协议,这将断开设备并将旧协议接口替换为新协议接口。