2016-07-25 28 views
1

Ich versuche einen Filtertreiber zu einem Protokoll in UEFI hinzuzufügen, was bedeutet, dass jeder, der das Protokoll in der Hierarchie konsumiert, irgendwann durch mich geht.Hinzufügen eines Treibers zum Gerätepfad UEFI

Ich verstehe, dass ich meinen Treiber zum relevanten Gerätepfad hinzufügen muss - obwohl keine Ahnung wie. Mehr noch, wie funktioniert es mit Handles, die bereits mit dem Gerät verbunden sind? (Wenn ich das richtig verstanden habe, muss ich meinen Treiber über BY_DRIVER | EXCLUSIVE mit dem Gerät verbinden. Sobald ich meinen eigenen Treiber mit dem Gerätepfad verbinde und ConnectController mit meinen Treiber-Handles verwende, sollte das UEFI automatisch alle unterstützenden Handles mit mir verbinden).

Ich hoffe, dass jemand weiß, wie man einen Treiber hinzufügt, der als Filtertreiber (oder in einem anderen Semantic - Layer - Treiber?) Für ein bestimmtes Protokoll fungieren würde.

Würde wirklich, wirklich zu schätzen, jede gegebene Hilfe, da ich nirgendwo sonst Hilfe gefunden habe.

Antwort

0

Es ist nicht kompliziert. Sie müssen lediglich die Protokolle neu installieren, die Sie abfangen möchten.

Lassen Sie uns EFI_PCI_IO_PROTOCOL als Beispiel nehmen:

  1. Sammeln Sie alle PCI-Gerät in Handle-Datenbank behandelt: LocateHandleBuffer()
  2. auf jedem Griff, um die ursprüngliche PCI-IO-Schnittstelle Get von HandleProtocol(), notieren Sie es irgendwo, wie Sie möchten Ruf es in deiner neuen Protokollschnittstelle an.
  3. Installieren Sie das PCI IO-Protokoll erneut unter gBS->ReinstallProtocolInterface, wodurch das Gerät getrennt und die alte Protokollschnittstelle durch die neue ersetzt wird.