Generieren von OID-Anforderungen aus einem NDIS-Filtertreiber
Ein Filtertreiber kann eine OID-Abfrage erstellen oder Anforderungen an zugrunde liegende Treiber festlegen, indem die NdisFOidRequest-Funktion aufgerufen wird.
Die folgende Abbildung veranschaulicht eine OID-Anforderung, die von einem Filtertreiber stammt.
Nachdem ein Filtertreiber die NdisFOidRequest-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.
Um synchron abzuschließen, gibt NdisFOidRequest NDIS_STATUS_SUCCESS oder einen Fehler status zurück. Um asynchron abzuschließen, gibt NdisFOidRequest NDIS_STATUS_PENDING zurück.
Um zu ermitteln, welche Informationen von einem zugrunde liegenden Treiber erfolgreich verarbeitet wurden, müssen Filtertreiber, 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 NdisFOidRequest NDIS_STATUS_PENDING zurückgibt, ruft NDIS die FilterOidRequestComplete-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 FilterOidRequestComplete. NDIS übergibt die letzte status der Anforderung am Statusparameter von FilterOidRequestComplete.
Wenn NdisFOidRequest 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 FilterOidRequestComplete-Funktion nicht auf.
Ein Treiber kann NdisFOidRequest aufrufen, wenn er sich im Status Neustarten, Ausführen, Anhalten oder Anhalten befindet .
Hinweis Ein Filtertreiber sollte die OID-Anforderungen nachverfolgen, die er erstellt hat, und sicherstellen, dass die NdisFOidRequestComplete-Funktion nicht aufgerufen wird, wenn solche Anforderungen abgeschlossen sind.