Funzione NdisDirectOidRequest (ndis.h)

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

Sintassi

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

Parametri

[in] NdisBindingHandle

Handle restituito dalla funzione NdisOpenAdapterEx che identifica l'adattatore miniport 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_XXXNdisDirectOidRequest 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 ProtocolDirectOidRequestComplete 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 era troppo piccolo, il membro BytesNeededed contiene il valore corretto per InformationBufferLength sul ritorno da NdisDirectOidRequest.
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. Per NdisDirectOidRequest, NDIS può anche restituire questo stato se il driver chiamante non ha registrato un Funzione ProtocolDirectOidRequestComplete .
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 nessuno dei valori NDIS_STATUS_Xxx più specifici ha causato l'esito negativo della richiesta del driver sottostante.

Commenti

Impossibile usare la funzione NdisDirectOidRequest per le richieste OID generali. Per le richieste OID generali, usare invece la funzione NdisOidRequest . NdisDirectOidRequest può essere usato solo per gli OID supportati da NDIS per l'uso con l'interfaccia OID diretta. Ad esempio, è possibile usare gli OID seguenti:

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA

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 nel parametro OidRequest prima di chiama NdisDirectOidRequest. 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.

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

Un driver che chiama NdisDirectOidRequest deve registrare Funzione ProtocolDirectOidRequestComplete .

L'interfaccia della richiesta OID diretta è simile all'interfaccia di richiesta OID generale. Per altre informazioni sull'emissione di richieste generali, vedere NdisOidRequest.

Nota Anche se le richieste OID dirette non sono generalmente serializzate, NDIS stesso può comunque pennare una richiesta con NDIS_STATUS_PENDING e accoda la richiesta per il completamento successivo. Ad esempio, NDIS può eseguire la penna e accodare una richiesta Direct OID inviata a un miniport di sospensione selettiva attualmente in stato di bassa potenza. I protocolli e i filtri devono essere preparati per gestire un codice NDIS_STATUS_PENDING, anche se il miniport sottostante completa la richiesta in modo sincrono.
 

Requisiti

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

Vedi anche

NDIS_OID_REQUEST

NdisOidRequest

NdisOpenAdapterEx

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA ProtocolDirectOidRequestComplete

ProtocolStatusEx