Freigeben über


Datenumgehungsmodus

Der Datenumgehungsmodus des Filtertreibers kann eine verbesserte Systemleistung bieten. NDIS ruft keine FilterXxx-Funktionen auf, die umgangen werden. Wenn beispielsweise die Sende- und Empfangsdienste für eine bestimmte Filteranwendung nicht erforderlich sind, kann der Filtertreiber die Sende- und Empfangsfunktionen umgehen.

Ein Filtertreiber gibt die Standardeinstiegspunkte für Funktionen an, die umgangen werden können, während der Treiberinitialisierung, wenn die NdisFRegisterFilterDriver-Funktion aufgerufen wird. Die Einstiegspunkte sind NULL für Funktionen, die standardmäßig umgangen werden. Weitere Informationen zur Initialisierung finden Sie unter Initialisieren eines Filtertreibers.

Um den Umgehungszustand zur Laufzeit zu ändern, muss der Treiber während der Treiberinitialisierung einen Einstiegspunkt für die FilterSetModuleOptions-Funktion angeben. Der Treiber kann eine NDIS_FILTER_PARTIAL_CHARACTERISTICS Struktur initialisieren und die neuen Merkmale aus dem Kontext von FilterSetModuleOptions an die NdisSetOptionalHandlers-Funktion übergeben.

NDIS ruft ggf. die FilterSetModuleOptions-Funktion zu Beginn eines Neustartvorgangs auf. Ein Filtertreiber kann den Umgehungsmodus unabhängig für jedes Filtermodul festlegen. Weitere Informationen finden Sie unter Starten eines Filtermoduls.

Filtertreiber können die folgenden optionalen FilterXxx-Funktionen umgehen, die in der NDIS_FILTER_DRIVER_CHARACTERISTICS-Struktur angegeben sind:

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

FilterCancelSendNetBufferLists

FilterReturnNetBufferLists

FilterReceiveNetBufferLists

Um eine FilterXxx-Funktion auf den Umgehungsmodus festzulegen, gibt ein Filtertreiber NULL für den Einstiegspunkt dieser Funktion an. Wenn ein Treiber jedoch eine NDIS-Funktion aufruft, die über eine zugeordnete FilterXxx-Funktion verfügt, muss er einen Einstiegspunkt für diese FilterXxx-Funktion bereitstellen. Wenn ein Treiber beispielsweise die Funktion NdisFIndicateReceiveNetBufferLists aufruft , muss er eine FilterReturnNetBufferLists-Funktion bereitstellen.

Wenn ein Filtertreiber eine FilterSendNetBufferLists-Funktion angibt und Sendeanforderungen in die Warteschlange stellt, muss er auch eine FilterCancelSendNetBufferLists-Funktion angeben.

Wenn ein Filtertreiber eine FilterReceiveNetBufferLists - oder FilterReturnNetBufferLists-Funktion angibt, muss der Treiber auch eine FilterStatus-Funktion angeben.

Um die Einstellungen für den Umgehungsmodus zur Laufzeit zu ändern, kann ein Filtertreiber die NdisFRestartFilter-Funktion aufrufen. NdisFRestartFilter plant einen Pausenvorgang, auf den ein Neustartvorgang für das angegebene Filtermodul folgt. Wenn NDIS FilterSetModuleOptions aufruft, kann der Filtertreiber die Funktionen für dieses Filtermodul ändern, indem er NdisSetOptionalHandlers aufruft und einen neuen Satz von Einstiegspunkten angibt.

Hinweis Das Anhalten und Neustarten kann dazu führen, dass einige Netzwerkpakete auf dem Übertragungs- oder Empfangspfad oder beidem abgelegt werden. Netzwerkprotokolle, die einen zuverlässigen Transportmechanismus bereitstellen, versuchen möglicherweise den Netzwerk-E/A-Vorgang im Falle eines verlorenen Pakets, aber andere Protokolle, die keine Zuverlässigkeit garantieren, wiederholen den Vorgang nicht.

Ein Filtertreiber kann zusätzliche optionale Funktionen registrieren, die optionale Treiberdienste unterstützen. Der Treiber registriert diese optionalen Dienste in der FilterSetOptions-Funktion . Weitere Informationen zu diesen optionalen Diensten finden Sie unter Konfigurieren optionaler Filtertreiberdienste.