Funzione NdisRequest (ndis.h)

Nota NDIS 5. x è stato deprecato e viene sostituito da NDIS 6. x. Per il nuovo sviluppo di driver NDIS, vedere Driver di rete a partire da Windows Vista. Per informazioni sulla conversione di NDIS 5. x driver per NDIS 6. x, vedere Conversione di driver NDIS 5.x in NDIS 6.0.

NdisRequest inoltra una richiesta al driver sottostante su cui esegue una query sulle funzionalità o sullo stato della scheda di interfaccia di rete o che imposta lo stato della scheda di interfaccia di rete.

Sintassi

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

Parametri

[out] Status

Puntatore a una variabile fornita dal chiamante impostata in caso di restituzione da questa funzione. Il driver sottostante determina quale NDIS_STATUS_XXX viene restituito, ma in genere è uno dei valori seguenti:

  • NDIS_STATUS_SUCCESS
    Operazione richiesta completata correttamente.

  • NDIS_STATUS_PENDING
    La richiesta viene gestita in modo asincrono e la funzione ProtocolRequestComplete del chiamante verrà chiamata al termine.

  • NDIS_STATUS_INVALID_OID
    Il codice OID_XXX specificato nel membro Oid del buffer strutturato NDIS_REQUEST in NdisRequest 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_REQUEST in NdisRequest 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 al ritorno da NdisRequest.

  • NDIS_STATUS_INVALID_DATA
    I dati forniti in InformationBuffer nella struttura di NDIS_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 risultato indica che un tentativo di allocare memoria non è riuscito, ma non indica necessariamente che la stessa richiesta, inviata in un secondo momento, non sarà riuscita per lo stesso motivo.

  • NDIS_STATUS_NOT_ACCEPTED
    Il driver sottostante ha tentato l'operazione richiesta, in genere un set, sulla relativa scheda di interfaccia di rete, ma non è riuscito dalla netcard. 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 non ha superato l'operazione richiesta perché è in corso una chiusura.

  • NDIS_STATUS_RESET_IN_PROGRESS
    Il driver della scheda di interfaccia di rete sottostante non può soddisfare la richiesta in questo momento perché sta reimpostando la netcard. La funzione ProtocolStatus del chiamante è 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 da parte del driver sottostante.

[in] NdisBindingHandle

Specifica l'handle restituito da NdisOpenAdapter che identifica la scheda di interfaccia di rete di destinazione o la scheda virtuale del driver inferiore successivo a cui è associato il chiamante.

[in] NdisRequest

Puntatore a una struttura memorizzata nel buffer che specifica l'operazione richiesta con un determinato codice OID_ XXX per una query o un set.

Valore restituito

nessuno

Osservazioni

Un driver di protocollo deve allocare memoria sufficiente per il buffer di informazioni associato al OID_XXX dell'operazione che richiederà. Il driver deve anche allocare e configurare il buffer in NdisRequest prima di chiamare NdisRequest. Entrambi i buffer devono essere allocati da un pool non di paging perché il driver sottostante viene eseguito in irQL generato durante l'elaborazione della richiesta.

Per i chiamanti sovrapposti a un driver NDIS intermedio, NdisRequest inoltra una richiesta al driver inferiore successivo che restituisce informazioni sulle proprie funzionalità o indirizza il driver a gestire funzionalità specifiche in modo determinato dal chiamante. Se il driver successivo inferiore è un driver intermedio NDIS, può chiamare NdisRequest con una richiesta specifica dell'OID propria prima di completare la richiesta inviata originariamente dal protocollo di livello superiore.

Alcuni errori restituiti in Stato sono ripristinabili, tra cui i seguenti:

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

Ovvero, un driver può modificare il pacchetto in NdisRequest in modo appropriato per correggere il codice OID_XXX e/o le dimensioni o il contenuto del buffer in InformationBuffer e inviare di nuovo il pacchetto di richiesta a NdisRequest. Lo stesso pacchetto potrebbe essere soddisfatto per la reinmissione a NdisRequest se la chiamata originale indicava una reimpostazione in corso o che una carenza di risorse, che potrebbe essere temporanea, impediva l'esecuzione di tale richiesta.

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 il quale 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 Identificatori di oggetto NDIS.

  • Piattaforma di destinazione: universale
  • Versione: non supportata per i driver NDIS 6.0 in Windows Vista. Usare invece NdisOidRequest. Supportato per i driver NDIS 5.1 in Windows Vista e Windows XP.

Requisiti

Requisito Valore
Intestazione ndis.h (include Ndis.h)
Libreria Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

Vedi anche