NdisRequest-Funktion (ndis.h)

Hinweis NDIS 5. x ist veraltet und wird durch NDIS 6 ersetzt. x. Informationen zur Entwicklung neuer NDIS-Treiber finden Sie unter Netzwerktreiber ab Windows Vista. Informationen zum Portieren von NDIS 5. x Treiber für NDIS 6. x, siehe Portieren von NDIS 5.x-Treibern zu NDIS 6.0.

NdisRequest leitet eine Anforderung an den zugrunde liegenden Treiber weiter, der die Funktionen oder status seiner NIC abfragt oder den Zustand seiner NIC festgelegt hat.

Syntax

void NdisRequest(
  [out] PNDIS_STATUS  Status,
  [in]  NDIS_HANDLE   NdisBindingHandle,
  [in]  PNDIS_REQUEST NdisRequest
);

Parameter

[out] Status

Zeiger auf eine vom Aufrufer bereitgestellte Variable, die bei der Rückgabe von dieser Funktion festgelegt wird. Der zugrunde liegende Treiber bestimmt, welcher NDIS_STATUS_XXX zurückgegeben wird, es handelt sich jedoch in der Regel um einen der folgenden Werte:

  • NDIS_STATUS_SUCCESS
    Der angeforderte Vorgang wurde erfolgreich abgeschlossen.

  • NDIS_STATUS_PENDING
    Die Anforderung wird asynchron behandelt, und die ProtocolRequestComplete-Funktion des Aufrufers wird aufgerufen, wenn sie abgeschlossen ist.

  • NDIS_STATUS_INVALID_OID
    Der OID_XXX-Code , der im Oid-Member des NDIS_REQUEST strukturierten Puffers bei NdisRequest angegeben wird, ist ungültig oder wird vom zugrunde liegenden Treiber nicht unterstützt.

  • NDIS_STATUS_INVALID_LENGTH oder NDIS_STATUS_BUFFER_TOO_SHORT
    Der im InformationBufferLength-Member des NDIS_REQUEST strukturierten Puffers bei NdisRequest angegebene Wert entspricht nicht den Anforderungen für den angegebenen OID_XXX-Code . Wenn der Informationspuffer zu klein ist, enthält das BytesNeeded-Element bei rückgabe von NdisRequest den richtigen Wert für InformationBufferLength.

  • NDIS_STATUS_INVALID_DATA
    Die bei InformationBuffer in der angegebenen NDIS_REQUEST-Struktur bereitgestellten Daten sind für den angegebenen OID_XXX-Code ungültig.

  • NDIS_STATUS_NOT_SUPPORTED oder NDIS_STATUS_NOT_RECOGNIZED
    Der zugrunde liegende Treiber unterstützt den angeforderten Vorgang nicht.

  • NDIS_STATUS_RESOURCES
    Die Anforderung konnte aufgrund einer Ressourcenknappheit nicht erfüllt werden. In der Regel gibt diese Rückgabe an, dass ein Versuch, Arbeitsspeicher zuzuweisen, fehlgeschlagen ist, aber nicht notwendigerweise, dass die gleiche Anforderung, die später übermittelt wurde, aus demselben Grund fehlschlägt.

  • NDIS_STATUS_NOT_ACCEPTED
    Der zugrunde liegende Treiber hat den angeforderten Vorgang (in der Regel ein Satz) für seine NIC versucht, aber die Netcard hat einen Fehler verursacht. Beispielsweise kann ein Versuch, zu viele Multicastadressen festzulegen, dazu führen, dass dieser Wert zurückgegeben wird.

  • NDIS_STATUS_CLOSING oder NDIS_STATUS_CLOSING_INDICATING
    Beim zugrunde liegenden Treiber ist der angeforderte Vorgang fehlgeschlagen, da ein Schließen ausgeführt wird.

  • NDIS_STATUS_RESET_IN_PROGRESS
    Der zugrunde liegende NIC-Treiber kann die Anforderung zu diesem Zeitpunkt nicht erfüllen, da die Netcard derzeit zurückgesetzt wird. Die ProtocolStatus-Funktion des Aufrufers wurde oder wird mit NDIS_STATUS_RESET_START aufgerufen, um anzugeben, dass ein Reset ausgeführt wird. Dieser Rückgabewert weist nicht unbedingt darauf hin, dass dieselbe Anforderung, die später gesendet wird, aus demselben Grund fehlschlägt.

  • NDIS_STATUS_FAILURE
    Dieser Wert ist in der Regel ein unspezifischer Standardwert, der zurückgegeben wird, wenn keiner der spezifischeren NDIS_STATUS_XXX verursacht hat, dass der zugrunde liegende Treiber die Anforderung fehlschlägt.

[in] NdisBindingHandle

Gibt das von NdisOpenAdapter zurückgegebene Handle an, das die Ziel-NIC oder den virtuellen Adapter des nächstniedrigen Treibers identifiziert, an den der Aufrufer gebunden ist.

[in] NdisRequest

Zeiger auf eine gepufferte Struktur, die den Vorgang angibt, der mit einem bestimmten OID_ XXX-Code für eine Abfrage oder einen Satz angefordert wird.

Rückgabewert

Keine

Bemerkungen

Ein Protokolltreiber muss genügend Arbeitsspeicher für den Informationspuffer zuweisen, der dem OID_XXX des vorgangs zugeordnet ist, den er anfordern wird. Der Treiber muss auch den Puffer bei NdisRequest zuordnen und einrichten, bevor er NdisRequest aufruft. Beide Puffer müssen aus einem nicht ausgestellten Pool zugeordnet werden, da der zugrunde liegende Treiber bei ausgelöstem IRQL ausgeführt wird, während die Anforderung verarbeitet wird.

Für Aufrufer, die über einem zwischengeschalteten NDIS-Treiber liegen, leitet NdisRequest eine Anforderung an den nächstniedrigen Treiber weiter, der Informationen zu seinen eigenen Funktionen zurückgibt, oder weist diesen Treiber an, bestimmte Funktionen in einer vom Aufrufer bestimmten Weise zu behandeln. Wenn der nächstniedrige Treiber ein NDIS-Zwischentreiber ist, kann er NdisRequest mit einer eigenen OID-spezifischen Anforderung aufrufen, bevor er die ursprünglich vom Protokoll der höheren Ebene übermittelte Anforderung abschließt.

Einige unter Status zurückgegebene Fehler können wie folgt wiederhergestellt werden:

NDIS_STATUS_INVALID_OID

NDIS_STATUS_INVALID_LENGTH

NDIS_STATUS_BUFFER_TOO_SHORT

NDIS_STATUS_INVALID_DATA

NDIS_STATUS_RESOURCES

NDIS_STATUS_RESET_IN_PROGRESS

Das heißt, ein Treiber kann das Paket bei NdisRequest entsprechend ändern, um den OID_XXX-Code und/oder die Größe oder den Inhalt des Puffers bei InformationBuffer zu korrigieren und das Anforderungspaket erneut an NdisRequest zu übermitteln. Dasselbe Paket kann bei der erneuten Übermittlung an NdisRequest erfüllt werden, wenn der ursprüngliche Aufruf auf eine laufende Zurücksetzung hinweist oder dass eine Ressourcenknappheit, die möglicherweise vorübergehend ist, die Ausführung dieser Anforderung verhindert hat.

Die NDIS-Bibliothek verwaltet Bindungen für zugrunde liegende Miniporttreiber. NDIS kann Informationen für bindungsspezifische Abfragen zurückgeben, wenn eine bestimmte OID einem systemdefiniertem Mitteltyp zugeordnet ist, für den das System eine Filterbibliothek bereitstellt.

Weitere Informationen zu den allgemeinen und medienspezifischen OIDs und den zugehörigen Informationspuffern finden Sie unter NDIS-Objektbezeichner.

  • Zielplattform: Universell
  • Version: Nicht unterstützt für NDIS 6.0-Treiber in Windows Vista. Verwenden Sie stattdessen NdisOidRequest. Unterstützt für NDIS 5.1-Treiber in Windows Vista und Windows XP.

Anforderungen

Anforderung Wert
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

Weitere Informationen