Anhalten eines Filtermoduls
Um ein laufendes Filtermodul anzuhalten, ruft NDIS die FilterPause-Funktion des Filtertreibers auf. Das Filtermodul wechselt zu Beginn der Ausführung in der FilterPause-Funktion in den Zustand Anhalten.
NDIS hält ein Filtermodul im Rahmen eines Plug & Play-Vorgangs an, um einen Treiberstapel anzuhalten. Eine Übersicht über das Anhalten des Treiberstapels finden Sie unter Anhalten eines Treiberstapels.
Im Namen eines Filtermoduls, das sich im Zustand "Anhalten" befindet, führt der Filtertreiber folgendes aus:
Sollte keine neuen Empfangshinweise haben.
Weitere Informationen zu Sende- und Empfangsvorgängen finden Sie unter Filtern von Sende- und Empfangsvorgängen für Module.
Wenn Empfangsvorgänge vorhanden sind, von denen der Filtertreiber stammt und die NDIS nicht abgeschlossen wurde, muss der Filtertreiber warten, bis NDIS solche Vorgänge abgeschlossen hat. Der Pausenvorgang ist erst abgeschlossen, wenn NDIS die FilterReturnNetBufferLists-Funktion für alle ausstehenden Empfangsanzeigen aufruft.
Sollte alle ausstehenden Empfangshinweise zurückgeben, dass zugrunde liegende Treiber sofort von NDIS stammen. Der Pausenvorgang ist erst abgeschlossen, wenn der Treiber die NdisFReturnNetBufferLists-Funktion für solche ausstehenden Empfangsanzeigen aufruft. Diese ausstehenden Empfangsanzeigen können vorhanden sein, wenn der Treiber die Puffer in die Warteschlange stellt, die er von zugrunde liegenden Treibern empfängt.
Sollte durch Aufrufen der NdisFReturnNetBufferLists-Funktion sofort neue Empfangsanzeigen zurückgeben, dass zugrunde liegende Treiber von NDIS stammen. Bei Bedarf kann der Treiber Empfangsanzeigen kopieren und in die Warteschlange stellen, bevor er sie zurückgibt.
HinweisNdisFReturnNetBufferLists sollte nicht für NBLs aufgerufen werden, die mit NDIS_RECEIVE_FLAGS_RESOURCES flag angegeben sind, das in einem entsprechenden FilterReceiveNetBufferLists-Aufruf festgelegt ist. Solche NBLs werden synchron an NDIS zurückgegeben, indem von der FilterReceiveNetBufferLists-Routine zurückgegeben wird.
Sollte keine neuen Sendeanforderungen erstellen.
Wenn Sendevorgänge vorhanden sind, von denen der Filtertreiber stammt und die NDIS nicht abgeschlossen wurde, muss der Filtertreiber warten, bis NDIS solche Vorgänge abgeschlossen hat. Der Pausenvorgang ist erst abgeschlossen, wenn NDIS die FilterSendNetBufferListsComplete-Funktion für alle ausstehenden Sendeanforderungen aufruft.
Sollte alle neuen Sendeanforderungen an die FilterSendNetBufferLists-Funktion sofort zurückgeben, indem die Funktion NdisFSendNetBufferListsComplete aufgerufen wird. Der Filtertreiber sollte den Status-Member in jeder NET_BUFFER_LIST-Struktur auf NDIS_STATUS_PAUSED festlegen.
Kann mit der NdisFIndicateStatus-Funktion status Anzeigen bereitstellen.
Weitere Informationen zu status Anzeigen finden Sie unter Filtern von Modulstatusanzeigen.
Sollte status Anzeigen in der FilterStatus-Funktion behandeln.
Sollte OID-Anforderungen in der FilterOidRequest-Funktion verarbeiten.
Weitere Informationen zu OID-Anforderungen finden Sie unter Filtern von Modul-OID-Anforderungen.
Kann OID-Anforderungen initiieren.
Die Ressourcen, die der Treiber während des Anfügungsvorgangs zugewiesen hat, sollten nicht freigegeben werden.
Sollte Timer abbrechen, falls erforderlich, um Sende- und Empfangsvorgänge zu beenden.
Weitere Informationen zu Timern finden Sie unter NDIS 6.0 Timer Services.
Nachdem der Filtertreiber die Sende- und Empfangsvorgänge erfolgreich angehalten hat, muss er den Pausenvorgang abschließen. Der Filtertreiber kann den Pausenvorgang synchron oder asynchron abschließen, indem er NDIS_STATUS_SUCCESS bzw. NDIS_STATUS_PENDING aus FilterPause zurückgibt.
Wenn der Treiber NDIS_STATUS_PENDING zurückgibt, muss er die NdisFPauseComplete-Funktion aufrufen, nachdem er den Pausenvorgang abgeschlossen hat.
Im Namen eines Filtermoduls, das sich im Status Angehalten befindet , führt der Filtertreiber folgendes aus:
Sollte nicht von neuen Empfangshinweisen stammen.
Sollte durch Aufrufen der NdisFReturnNetBufferLists-Funktion sofort neue Empfangsanzeigen zurückgeben, dass zugrunde liegende Treiber von NDIS stammen. Bei Bedarf kann der Treiber Empfangsanzeigen kopieren und in die Warteschlange stellen, bevor er sie zurückgibt.
Sollte keine neuen Sendeanforderungen erstellen.
Sollte alle neuen Sendeanforderungen an die FilterSendNetBufferLists-Funktion sofort zurückgeben, indem die Funktion NdisFSendNetBufferListsComplete aufgerufen wird. Der Filtertreiber sollte den Status-Member in jeder NET_BUFFER_LIST-Struktur auf NDIS_STATUS_PAUSED festlegen.
Kann mit der NdisFIndicateStatus-Funktion status Anzeigen bereitstellen.
Sollte status Anzeigen in der FilterStatus-Funktion behandeln.
Sollte OID-Anforderungen in der FilterOidRequest-Funktion verarbeiten.
Kann OID-Anforderungen initiieren.
NDIS initiiert keine anderen Plug & Play Vorgänge, z. B. Anfügen, Trennen oder Neustartanforderungen, während sich der Filtertreiber im Zustand Angehalten befindet. NDIS kann Trenn- oder Neustartanforderungen initiieren, nachdem sich ein Filtertreiber im Zustand Angehalten befindet . Weitere Informationen zum Trennen eines Filtermoduls finden Sie unter Trennen eines Filtermoduls. Weitere Informationen zum Neustarten eines Filtermoduls finden Sie unter Starten eines Filtermoduls.