Konfigurieren einer INF-Datei für einen Überwachungsfiltertreiber
Die folgenden Probleme bei der Installation von NDIS-Filtertreibern sind mit der Überwachung von Filtertreibern verbunden:
Legen Sie den Dateieintrag Class INF in der INF-Datei auf NetService fest. Das folgende Beispiel zeigt einen Klassenbeispieleintrag für die INF-Datei.
Class = NetService
Der Abschnitt DDInstall in einer INF-Datei des Filtertreibers muss über den Eintrag Merkmale verfügen . Das folgende Beispiel zeigt, wie Sie den Eintrag Merkmale in Ihrer Filter-INF-Datei definieren sollten.
Characteristics=0x40000
Der 0x40000-Wert gibt an, dass NCF_LW_FILTER (0x40000) festgelegt ist. Filtertreiber dürfen das NCF_FILTER-Flag (0x400) nicht festlegen. Die Werte der NCF_ Xxx-Flags sind in Netcfgx.h definiert. Weitere Informationen zu NCF_ Xxx-Flags finden Sie im Abschnitt DDInstall in einer Netzwerk-INF-Datei.
Legen Sie den NetCfgInstanceId-INF-Dateieintrag in der INF-Datei fest, wie im folgenden Beispiel gezeigt.
NetCfgInstanceId="{5cbf81bf-5055-47cd-9055-a76b2b4e3697}"
Sie können das toolUuidgen.exe verwenden, um die GUID für den Eintrag NetCfgInstanceId zu erstellen.
Der Abschnitt DDInstall der INF-Datei für einen Filtertreiber muss eine Addreg-Direktive für einen Ndi-Schlüssel enthalten. Die INF-Datei muss den Diensteintrag unter dem Schlüssel Ndi angeben. Der Eintrag ServiceBinary im Dienstinstallationsabschnitt der INF-Datei gibt den Pfad zur Binärdatei für den Filtertreiber an. Weitere Informationen finden Sie unter Hinzufügen Service-Related-Werte zum Ndi-Schlüssel und im Abschnitt DDInstall.Services in einer Netzwerk-INF-Datei.
Der Abschnitt DDInstall in einer INF-Datei des Filtertreibers muss filterType - und FilterRunType-Einträge enthalten. Um einen Überwachungsfilter anzugeben, definieren Sie den FilterType-Eintrag in Ihrer INF-Datei, wie im folgenden Beispiel gezeigt.
HKR, Ndi,FilterType,0x00010001 ,0x00000001
Der FilterType-Wert 0x00000001 gibt an, dass der Filter ein Überwachungsfilter ist.
Definieren Sie den FilterRunType-Eintrag in Ihrer INF-Datei, wie im folgenden Beispiel gezeigt.
HKR, Ndi,FilterRunType,0x00010001 ,0x00000002
Der wert 0x00000002 im vorherigen Beispiel gibt an, dass das Filtermodul optional ist. Legen Sie zum Installieren eines obligatorischen Filtermoduls den Eintrag FilterRunType auf 0x00000001 fest. Weitere Informationen finden Sie unter Obligatorische Filtertreiber.
Hinweis Es wird dringend empfohlen, dass ein LWF-Treiber (Monitoring Lightweight Filter) nicht obligatorisch sein sollte, es sei denn, er wird in einer kontrollierten Umgebung verwendet, in der keine optionalen LWF-Treiber geändert werden. Dies liegt daran, dass ein obligatorischer LWF-Überwachungstreiber dazu führen kann, dass filterAttach bei der optionalen Änderung von LWF-Treibern fehlschlägt. Ein Überwachen des LWF-Treibers ist über jeden ändernden Filter und jede Bindung von Design gebunden, um die Überwachung des Netzwerkdatenverkehrs auf allen Ebenen zu erleichtern. Nehmen Sie das folgende Szenario als Beispiel:
- Ein instance eines obligatorischen LWF-Überwachungstreibers wird über einen optionalen LWF-Treiber installiert.
- Der untere optionale LWF-Treiber kann nicht an eine niedrigere Komponente angefügt werden. Dies führt dazu, dass der FilterAttach-Handler des obligatorischen Überwachungs-LWF-Treibers nicht aufgerufen wird.
- Da jetzt ein instance eines obligatorischen LWF-Treibers nicht geladen wird, bindet NDIS keine Protokolle (z. B. TCP/IP) an die Schnittstelle oder NIC, sodass die Schnittstelle unbrauchbar ist.
Das folgende Beispiel zeigt, wie eine INF-Filtertreiberdatei den Namen des Diensts angibt.
HKR, Ndi,Service,,"NdisMon"
In diesem Beispiel ist "NdisMon" der Name des Treiberdiensts, der an NDIS gemeldet wird. Beachten Sie, dass sich der Name eines Filtertreiberdiensts vom Namen der Binärdatei für den Treiber unterscheiden kann, aber in der Regel identisch ist.
Das folgende Beispiel zeigt, wie die Filter-INF-Datei beim Hinzufügen dieses Diensts auf den Namen des Diensts des Filtertreibers verweist.
[Install.Services] AddService=NdisMon,,NdisMon_Service_Inst [NdisMon_Service_Inst] DisplayName = %NdisMon_Desc% ServiceType = 1 ;SERVICE_KERNEL_DRIVER StartType = 1 ;SERVICE_SYSTEM_START ErrorControl = 1 ;SERVICE_ERROR_NORMAL ServiceBinary = %13%\ndisMon.sys LoadOrderGroup = NDIS Description = %NdisMon_Desc% AddReg = Common.Params.Reg
Eine Filter-INF-Datei muss mindestens den primären Dienstnamen des Filters für das CoServices-Attribut angeben, wie im folgenden Beispiel gezeigt.
HKR, Ndi,CoServices,0x00010000,"NdisMon"
Weitere Informationen zum CoServices-Attribut finden Sie unter Hinzufügen Service-Related Werte zum Ndi-Schlüssel.
Der FilterClass-Wert in der INF-Datei für einen Filtertreiber bestimmt dessen Reihenfolge in einem Stapel von Änderungsfiltern. Überwachungsfiltertreiber definieren jedoch nicht den FilterClass-Schlüssel . Stattdessen ist das zuerst installierte Überwachungsfiltermodul dem Miniportadapter am nächsten.
Sie müssen die folgenden Einträge in der INF-Datei des Überwachungsfiltertreibers definieren, um die Treiberbindungen zu steuern:
HKR, Ndi\Interfaces,UpperRange,,"noupper" HKR, Ndi\Interfaces,LowerRange,,"nolower" HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
Weitere Informationen zum Steuern der Treiberbindungen finden Sie unter Angeben von Bindungsbeziehungen für Filtertreiber.
Eine Überwachungsfilter-INF-Datei kann allgemeine Parameterdefinitionen für den Filtertreiber, Parameter, die einem bestimmten Adapter zugeordnet sind, und Parameter angeben, die einem bestimmten instance (Filtermodul) zugeordnet sind. Das folgende Beispiel zeigt einige allgemeine Parameterdefinitionen.
Achtung
Die Verwendung von HKR AddReg , um Schlüssel direkt unter dem Dienststatus zu platzieren, stellt eine Konformitätsverletzung dar. Diese Schlüssel müssen unter dem Parameterschlüssel des Diensts hinzugefügt werden, um konform zu sein.
[Common.Params.reg] HKR, FilterDriverParams\DriverParam, ParamDesc, ,"Driverparam for filter" HKR, FilterDriverParams\DriverParam, default, ,"5" HKR, FilterDriverParams\DriverParam, type, ,"int" HKR, FilterAdapterParams\AdapterParam, ParamDesc, ,"Adapterparam for filter" HKR, FilterAdapterParams\AdapterParam, default, ,"10" HKR, FilterAdapterParams\AdapterParam, type, ,"int" HKR, FilterInstanceParams\InstanceParam, ParamDesc, ,"Instance param for filter" HKR, FilterInstanceParams\InstanceParam, default, ,"15" HKR, FilterInstanceParams\InstanceParam, type, ,"int"