Generieren von OID-Anforderungen aus einem NDIS-Protokolltreiber
Um eine OID-Anforderung an zugrunde liegende Treiber zu erstellen, ruft ein Protokoll die NdisOidRequest-Funktion auf.
Die folgende Abbildung veranschaulicht eine OID-Anforderung, die von einem Protokolltreiber stammt.
Nachdem ein Protokolltreiber die NdisOidRequest-Funktion aufgerufen hat, ruft NDIS die Anforderungsfunktion des nächsten zugrunde liegenden Treibers auf. Weitere Informationen dazu, wie ein Miniporttreiber OID-Anforderungen verarbeitet, finden Sie unter OID-Anforderungen für einen Adapter. Weitere Informationen dazu, wie ein Filtertreiber OID-Anforderungen verarbeitet, finden Sie unter FilterModul-OID-Anforderungen.
Um synchron abzuschließen, gibt NdisOidRequest NDIS_STATUS_SUCCESS oder einen Fehler status zurück. Um asynchron abzuschließen, gibt NdisOidRequest NDIS_STATUS_PENDING zurück.
Wenn NdisOidRequest NDIS_STATUS_PENDING zurückgibt, ruft NDIS die ProtocolOidRequestComplete-Funktion auf, nachdem die zugrunde liegenden Treiber die OID-Anforderung abgeschlossen haben. In diesem Fall übergibt NDIS die Ergebnisse der Anforderung am OidRequest-Parameter von ProtocolOidRequestComplete. NDIS übergibt den letzten status der Anforderung am Statusparameter von ProtocolOidRequestComplete.
Wenn NdisOidRequest NDIS_STATUS_SUCCESS zurückgibt, werden die Ergebnisse einer Abfrageanforderung in der NDIS_OID_REQUEST-Struktur am OidRequest-Parameter zurückgegeben. In diesem Fall ruft NDIS die ProtocolOidRequestComplete-Funktion nicht auf.
Um zu ermitteln, welche Informationen von einem zugrunde liegenden Treiber erfolgreich verarbeitet wurden, müssen Protokolltreiber, die OID-Anforderungen ausstellen, den Wert im SupportedRevision-Member in der NDIS_OID_REQUEST-Struktur überprüfen, nachdem die OID-Anforderung zurückgegeben wurde. Weitere Informationen zu NDIS-Versionsinformationen finden Sie unter Angeben von NDIS-Versionsinformationen.
Wenn der zugrunde liegende Treiber die OID-Anforderung einer nachfolgenden status-Angabe zuordnen soll, sollte der Protokolltreiber den RequestId-Member in der NDIS_OID_REQUEST-Struktur festlegen. Wenn der zugrunde liegende Treiber einen status Hinweis gibt, legt er den RequestId-Member in der NDIS_STATUS_INDICATION-Struktur auf den Wert fest, der in der OID-Anforderung angegeben wird.
Ein Treiber kann NdisOidRequest aufrufen, wenn sich eine Bindung im Status Neustarting, Running, Pausing oder Paused befindet.