将驱动程序添加到设备路径UEFI

时间:2016-07-25 18:06:03

标签: c filter driver bios uefi

我正在尝试向UEFI中的协议添加过滤器驱动程序,这意味着在层次结构中使用该协议的每个人最终都会通过我。

我知道我需要将我的驱动程序添加到相关的设备路径 - 虽然不知道如何。更重要的是,它如何与已连接到设备的任何句柄一起使用? (如果我理解正确,我需要使用BY_DRIVER | EXCLUSIVE将我的驱动程序连接到设备,一旦我将自己的驱动程序连接到设备路径并使用ConnectController和我的驱动程序句柄,UEFI应该自动连接任何支持句柄给我)

我希望有人知道如何添加一个驱动程序,作为特定协议的过滤器驱动程序(或不同的语义层驱动程序?)。

真的,真的感谢任何给定的帮助,因为我在其他任何地方都没有找到任何帮助。

1 个答案:

答案 0 :(得分:0)

这并不复杂。您唯一需要做的就是重新安装您想拦截的协议。

我们以EFI_PCI_IO_PROTOCOL为例:

  1. 收集句柄数据库中的所有PCI设备句柄:LocateHandleBuffer()
  2. 通过HandleProtocol()在每个句柄上获取原始PCI IO接口,将其记录在您可能想要在新协议接口内调用的位置。
  3. gBS->ReinstallProtocolInterface重新安装PCI IO协议,这将断开设备并将旧协议接口替换为新协议接口。