Funzione NdisOidRequest (ndis.h)

La funzione NdisOidRequest inoltra una richiesta ai driver sottostanti per eseguire query sulle funzionalità o sullo stato di un adattatore o impostare lo stato di un adattatore.

Sintassi

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

Parametri

[in] NdisBindingHandle

Handle restituito dalla funzione NdisOpenAdapterEx che identifica l'adapter di destinazione nell'associazione.

[in] OidRequest

Puntatore a una struttura NDIS_OID_REQUEST che specifica l'operazione richiesta con un determinato codice OID_XXX per eseguire query sullo stato di un adattatore o per impostare lo stato di un adattatore.

Valore restituito

Il driver sottostante determina quale codice NDIS_STATUS_XXXNdisOidRequest restituisce, ma in genere è uno dei valori seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Operazione di richiesta completata correttamente.
NDIS_STATUS_PENDING
La richiesta viene gestita in modo asincrono e NDIS chiamerà il chiamante Funzione ProtocolOidRequestComplete al termine della richiesta.
NDIS_STATUS_INVALID_OID
Il codice OID_XXX specificato nel membro Oid del buffer strutturato NDIS_OID_REQUEST in OidRequest non è valido o non supportato dal driver sottostante.
NDIS_STATUS_INVALID_LENGTH o NDIS_STATUS_BUFFER_TOO_SHORT
Il valore specificato nel membro InformationBufferLength del buffer strutturato NDIS_OID_REQUEST in OidRequest non corrisponde ai requisiti per il codice OID_ XXX specificato. Se il buffer delle informazioni è troppo piccolo, il membro BytesNeededed contiene il valore corretto per InformationBufferLength sulla restituzione da NdisOidRequest.
NDIS_STATUS_INVALID_DATA
I dati forniti in InformationBuffer nella struttura NDIS_OID_REQUEST specificata non sono validi per il codice OID_ XXX specificato.
NDIS_STATUS_NOT_SUPPORTED o NDIS_STATUS_NOT_RECOGNIZED
Il driver sottostante non supporta l'operazione richiesta.
NDIS_STATUS_RESOURCES
Impossibile soddisfare la richiesta a causa di una carenza di risorse. In genere, questo valore restituito indica che un tentativo di allocare memoria non è riuscito, ma non indica necessariamente che la stessa richiesta, inviata in seguito, non sarà riuscita per lo stesso motivo.
NDIS_STATUS_NOT_ACCEPTED
Il driver sottostante ha tentato l'operazione richiesta, in genere un set su una scheda di interfaccia di rete, ma non è riuscito. Ad esempio, un tentativo di impostare troppi indirizzi multicast potrebbe causare la restituzione di questo valore.
NDIS_STATUS_CLOSING o NDIS_STATUS_CLOSING_INDICATING
Il driver sottostante ha avuto esito negativo sull'operazione richiesta perché un'operazione di chiusura è in corso.
NDIS_STATUS_RESET_IN_PROGRESS
Il driver miniport sottostante non può soddisfare la richiesta in questo momento perché è attualmente reimpostata la scheda di interfaccia di rete interessata. La funzione ProtocolStatusEx del chiamante è stata o verrà chiamata con NDIS_STATUS_RESET_START per indicare che è in corso una reimpostazione. Questo valore restituito non indica necessariamente che la stessa richiesta, inviata in un secondo momento, non sarà riuscita per lo stesso motivo.
NDIS_STATUS_FAILURE
Questo valore è in genere un valore predefinito non specifico, restituito quando nessuna delle NDIS_STATUS_XXX più specifiche ha causato l'esito negativo della richiesta del driver sottostante.

Commenti

Un driver di protocollo deve allocare memoria sufficiente per contenere il buffer di informazioni associato all'OID specificato. Il driver deve anche allocare e configurare il buffer in OidRequest prima di chiama NdisOidRequest. Entrambi i buffer devono essere allocati da un pool non con pagine perché il driver sottostante viene eseguito in irQL generato durante l'elaborazione della richiesta.

NdisOidRequest inoltra una richiesta ai driver sottostanti o gestisce la richiesta stessa. Se il driver inferiore successivo è un driver intermedio NDIS, può chiamare NdisOidRequest con una richiesta specifica OID del proprio prima di completare la richiesta originariamente inviata dal driver di livello superiore.

Alcuni errori restituiti sono recuperabili, inclusi i seguenti:

Vale a dire, un driver può modificare il pacchetto in OidRequest in modo appropriato per correggere il codice OID_ XXX o le dimensioni o il contenuto del buffer in InformationBuffer e inviare di nuovo il pacchetto di richiesta a NdisOidRequest. Lo stesso pacchetto potrebbe essere soddisfatto per la resubmissione a NdisOidRequest se la chiamata originale indicava una reimpostazione in corso o che una carenza di risorse, che potrebbe essere temporanea, impedisce che tale richiesta venga eseguita.

La libreria NDIS gestisce le associazioni per i driver miniport sottostanti. NDIS può restituire informazioni per le query specifiche dell'associazione se un determinato OID è associato a un tipo medio definito dal sistema per cui il sistema fornisce una libreria di filtri.

Per altre informazioni sugli OID generali e specifici dei supporti e sui rispettivi buffer di informazioni associati, vedere NDIS OID.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Desktop
Intestazione ndis.h (includere Ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_OID_Function(ndis)

Vedi anche

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx