Freigeben über


FILTER_SYNCHRONOUS_OID_REQUEST_COMPLETE-Funktion (ndis.h)

NDIS ruft die FilterSynchronousOidRequestComplete-Funktion eines Filtertreibers auf, nachdem eine synchrone OID-Anforderung von einem zugrunde liegenden Treiber abgeschlossen wurde.

Diese Funktion wird in NDIS 6.81 und höher unterstützt.

Syntax

void FILTER_SYNCHRONOUS_OID_REQUEST_COMPLETE(
  [in]      NDIS_HANDLE      FilterModuleContext,
  [in, out] NDIS_OID_REQUEST *OidRequest,
  [in, out] NDIS_STATUS      *Status,
  [in]      PVOID            CallContext
);

Parameter

[in] FilterModuleContext

Ein Handle für den Kontextbereich für das Filtermodul, das das Ziel dieser Anforderung ist. Der Filtertreiber hat diesen Kontextbereich in der FilterAttach-Funktion erstellt und initialisiert.

[in, out] OidRequest

Ein Zeiger auf eine NDIS_OID_REQUEST-Struktur , die den abgeschlossenen Vorgang angibt.

[in, out] Status

Ein Zeiger auf den resultierenden status Code der abgeschlossenen Anforderung.

[in] CallContext

Ein Speicherslot im PVOID-Format, für den der Filtertreiber den Zustand zwischen den Handlern FilterSynchronousOidRequest und FilterSynchronousOidRequestComplete gemeinsam nutzen kann. Wenn der Filtertreiber einen FilterSynchronousOidRequest-Handler implementiert, enthält dieser Parameter den Kontextwert, den der FilterSynchronousOidRequest-Handler zurückgegeben hat. Wenn der Filtertreiber andernfalls keinen FilterSynchronousOidRequest-Handler implementiert, ist dieser Wert null.

Rückgabewert

Keine

Bemerkungen

FilterSynchronousOidRequestComplete ist eine optionale Funktion. Wenn ein Filtertreiber synchrone OID-Anforderungen, die vom Miniporttreiber abgeschlossen wurden, nicht beobachten oder ändern muss, sollte der Filtertreiber den Einstiegspunkt für diese Funktion auf NULL festlegen, wenn er NdisFRegisterFilterDriver aufruft.

NDIS ruft die FilterSynchronousOidRequestComplete-Funktion des Filtertreibers auf, um synchrone OID-Anforderungen zu verarbeiten, die von zugrunde liegenden Treibern abgeschlossen werden. Filtertreiber können einige Felder in der NDIS_OID_REQUEST-Struktur wie folgt lesen oder ändern:

Feld Filtern des Zugriffs
Header Schreibgeschützt
RequestType Lesen/Schreiben
PortNumber Lesen/Schreiben
Timeout Nicht auf zugreifen
RequestId Nicht auf zugreifen
RequestHandle Lesen/Schreiben
DATA Lesen/Schreiben
NdisReserved Nicht auf zugreifen
MiniportReserved Nicht auf zugreifen
SourceReserved Nicht auf zugreifen
SupportedRevision Lesen/Schreiben
Reserviert1, Reserviert2 Nicht auf zugreifen
SwitchId Lesen/Schreiben
VPortId Lesen/Schreiben
Flags Lesen/Schreiben

Zusätzlich zum Ändern der NDIS_OID_REQUEST-Struktur können Filtertreiber den status Code lesen oder ändern, mit dem der Vorgang abgeschlossen wurde. Der Filtertreiber kann einen neuen Wert in den *Status-Parameter schreiben. Filtertreiber dürfen NDIS_STATUS_PENDING oder NDIS_STATUS_ALREADY_COMPLETE nicht in den *Status-Parameter schreiben.

Wenn der Filtertreiber auch einen FilterSynchronousOidRequest-Handler registriert, garantiert NDIS, dass der FilterSynchronousOidRequestComplete-Handler nur aufgerufen wird, wenn der FilterSynchronousOidRequest-Handler NDIS_STATUS_SUCCESS zurückgibt.

Es wird erwartet, dass Filtertreiber schnell von ihrem FilterSynchronousOidRequestComplete-Handler zurückkehren, ohne zu blockieren, zu warten oder zu schlafen. Synchrone OID-Anforderungen werden nur für Vorgänge mit geringer Latenz verwendet, und Filtertreiber sollten versuchen, sie innerhalb von mehreren Millisekunden fortzusetzen oder abzuschließen.

NDIS serialisiert keine synchronen OID-Anforderungen gegeneinander, für andere OID-Anforderungen oder für FilterPause. Es liegt in der Verantwortung des Filtertreibers, alle erforderlichen Synchronisierungen zu implementieren.

NDIS serialisiert synchrone OID-Anforderungen für FilterDetach: NDIS garantiert, dass nach dem Aufruf von FilterDetach keine synchronen OID-Anforderungen aktiv sind.

Filtertreiber dürfen NdisAllocateCloneOidRequest oder NdisCancelOidRequest nicht für eine synchrone OID-Anforderung aufrufen. Filtertreiber dürfen NdisFSynchronousOidRequest nicht für eine OID-Anforderung aufrufen, die über einen FilterSynchronousOidRequestComplete-Handler empfangen wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1709
Zielplattform Windows
Kopfzeile ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

FilterSynchronousOidRequest

NdisFSynchronousOidRequest

Synchrone OID-Anforderungsschnittstelle in NDIS 6.80