2016-07-25 93 views
1

我想向UEFI中的协议添加筛选器驱动程序,这意味着在层次结构中使用该协议的每个人最终都会通过我。将驱动程序添加到设备路径UEFI

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

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

真的,真的欣赏任何帮助,因为我没有找到任何其他地方的任何帮助。

回答

0

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

让我们EFI_PCI_IO_PROTOCOL为例:

  1. 收集所有PCI设备在处理数据库处理:LocateHandleBuffer()
  2. 通过HandleProtocol()获取每个处理原始PCI IO接口,地方记录下来,你可能想在新的协议接口中调用它。
  3. 重新安装PCI IO协议gBS->ReinstallProtocolInterface,这将断开设备并将旧协议接口替换为新的协议接口。