MINIPORT_SYNCHRONOUS_OID_REQUEST-Funktion (ndis.h)

NDIS ruft die MiniportSynchronousOidRequest-Rückruffunktion eines Miniporttreibers auf, um eine synchrone OID-Anforderung auszusetzen.

Syntax

NDIS_STATUS MINIPORT_SYNCHRONOUS_OID_REQUEST(
  [in] NDIS_HANDLE      MiniportAdapterContext,
  [in] NDIS_OID_REQUEST *OidRequest
);

Parameter

[in] MiniportAdapterContext

Ein Handle für einen Kontextbereich, den der Miniporttreiber in seiner MiniportInitializeEx-Funktion zugeordnet hat. Der Miniporttreiber verwendet diesen Kontextbereich, um Zustandsinformationen für einen Miniportadapter zu verwalten.

[in] OidRequest

Ein Zeiger auf eine NDIS_OID_REQUEST Struktur, die sowohl den Puffer als auch das Anforderungspaket für den zu verarbeitenden Miniporttreiber enthält. Abhängig von der Anforderung gibt der Treiber angeforderte Informationen in der bereitgestellten Struktur zurück.

Rückgabewert

MiniportSynchronousOidRequest kann einen der folgenden status Werte zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der Miniporttreiber hat die Daten wie angefordert festgelegt oder abgerufen.
NDIS_STATUS_INVALID_OID
Die von OidRequest angegebene Anforderung war ungültig oder nicht erkannt.
NDIS_STATUS_NOT_SUPPORTED
Die von OidRequest angegebene Anforderung wurde erkannt, aber der Miniporttreiber unterstützt sie nicht.
NDIS_STATUS_BUFFER_TOO_SHORT
Der Puffer, den OidRequest bereitstellt, war zu klein, um die angeforderten Daten zu speichern.
NDIS_STATUS_INVALID_LENGTH
Der Wert, der im InformationBufferLength-Member der NDIS_OID_REQUEST-Struktur bei OidRequest angegeben wurde, ist für den angegebenen OID_Xxx-Code falsch.
NDIS_STATUS_INVALID_DATA
Mindestens einer der Parameter, die für die Anforderung bei OidRequest angegeben wurden, waren ungültig.
NDIS_STATUS_INDICATION_REQUIRED
Der Miniporttreiber stellt eine OID-Vervollständigung status mit einer nachfolgenden status-Angabe bereit. Ein Miniporttreiber kann NDIS_STATUS_INDICATION_REQUIRED nicht zurückgeben, es sei denn, die jeweilige OID lässt dies zu. Informationen dazu, ob diese status zulässig ist, finden Sie auf der OID-Referenzseite. Weitere Informationen zu NDIS_STATUS_INDICATION_REQUIRED finden Sie unter NDIS_OID_REQUEST und NDIS_STATUS_INDICATION.
NDIS_STATUS_NOT_ACCEPTED
Nach dem Aufruf von MiniportDevicePnPEventNotify-Funktion , um eine überraschende Entfernung anzuzeigen, hat NDIS die MiniportHaltEx-Funktion des Treibers aufgerufen. Wenn der Treiber OID-Anforderungen empfangen hat, bevor NDIS MiniportHaltEx aufruft, sollte er diese Anforderungen sofort mit dem status Wert NDIS_STATUS_NOT_ACCEPTED abschließen.

Miniport-Treiber müssen nicht immer NDIS_STATUS_NOT_ACCEPTED für alle OIDs nach einer überraschenden Entfernung zurückgeben, aber dies hilft zu erklären, warum der Anruf fehlgeschlagen ist.

Hinweise

MiniportSynchronousOidRequest ist eine optionale Funktion. Ein Miniporttreiber registriert diese Funktion, wenn synchrone OID-Anforderungen verarbeitet werden. Der Treiber gibt den MiniportSynchronousOidRequest-Einstiegspunkt an, wenn er die NdisMRegisterMiniportDriver-Funktion mithilfe des SynchronousOidRequestHandler-Elements der NDIS_MINIPORT_DRIVER_CHARACTERISTICS-Struktur aufruft.

Miniport-Treiber dürfen NDIS_STATUS_PENDING oder NDIS_STATUS_REQUEST_ABORTED von MiniportSynchronousOidRequest nicht zurückgeben. Synchrone OID-Anforderungen können nicht mit Stiften versehen oder abgebrochen werden.

Miniport-Treiber können NDIS_STATUS_NOT_ACCEPTED zurückgeben, nachdem NDIS MiniportDevicePnPEventNotify aufgerufen hat, um den Treiber über die überraschende Entfernung des Geräts zu benachrichtigen. Miniporttreiber können die OID-Anforderung jedoch weiterhin mit einem anderen status Code abschließen, wenn dies möglich ist. Weitere Informationen finden Sie in der spezifischen Dokumentation zu den einzelnen OIDs.

Von Miniport-Treibern wird erwartet, dass sie synchrone OID-Anforderungen schnell ausführen, ohne zu blockieren, zu warten oder zu schlafen. Synchrone OID-Anforderungen werden nur für Vorgänge mit niedriger Latenz verwendet, und Miniporttreiber sollten versuchen, sie innerhalb von mehreren Millisekunden abzuschließen. Die meisten OID-Anforderungen werden an MiniportOidRequest übermittelt, das stiften oder länger warten darf.

NDIS serialisiert keine synchronen OID-Anforderungen gegeneinander, für andere OID-Anforderungen, für MiniportPause, für MiniportResetEx oder für Energieübergänge. Es liegt in der Verantwortung des Miniporttreibers, eine eigene Synchronisierung zu implementieren und Anforderungen fehlzuschlagen, die zu einem Zeitpunkt übermittelt werden, zu dem die Anforderung nicht erfolgreich verarbeitet werden kann.

NDIS serialisiert synchrone OID-Anforderungen für MiniportHaltEx; NDIS garantiert, dass nach dem Aufrufen von MiniportHaltEx keine synchronen OID-Anforderungen aktiv sind.

Miniport-Treiber, die selektives Anhalten von NDIS implementieren, sind mit synchronen OIDs nicht kompatibel und dürfen keinen MiniportSynchronousOidRequest-Handler registrieren.

Anforderungen

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

Weitere Informationen

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportPause

MiniportResetEx

NDIS_MINIPORT_DRIVER_CHARACTERISTICS

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMRegisterMiniportDriver

Synchrone OID-Anforderungsschnittstelle in NDIS 6.80