MINIPORT_OID_REQUEST funzione di callback (ndis.h)

NDIS chiama una funzione MiniportOidRequest del driver miniport per gestire una richiesta OID per eseguire una query o impostare le informazioni nel driver.

Nota È necessario dichiarare la funzione usando il tipo di MINIPORT_OID_REQUEST . Per altre informazioni, vedere la sezione Esempi seguente.
 

Sintassi

MINIPORT_OID_REQUEST MiniportOidRequest;

NDIS_STATUS MiniportOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_OID_REQUEST OidRequest
)
{...}

Parametri

[in] MiniportAdapterContext

Handle per un'area di contesto allocata dal driver miniport nella funzione MiniportInitializeEx . Il driver miniport utilizza questa area di contesto per mantenere le informazioni sullo stato per un adattatore miniport.

[in] OidRequest

Puntatore a una struttura NDIS_OID_REQUEST che contiene sia il buffer che il pacchetto di richiesta per il driver miniport da gestire. A seconda della richiesta, il driver restituisce le informazioni richieste nella struttura fornita.

Valore restituito

MiniportOidRequest può restituire uno dei valori di stato seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Il driver miniport ha impostato o ottenuto i dati come richiesto.
NDIS_STATUS_PENDING
Il driver miniport completerà la richiesta in modo asincrono. Dopo che il driver miniport ha completato tutta l'elaborazione, deve chiamare il Funzione NdisMOidRequestComplete per informare NDIS che la richiesta è stata completata.
NDIS_STATUS_INVALID_OID
La richiesta, specificata in OidRequest, non è valida o non è riconosciuta.
NDIS_STATUS_NOT_SUPPORTED
La richiesta, specificata in OidRequest, viene riconosciuta, ma non supportata dal driver miniport.
NDIS_STATUS_BUFFER_TOO_SHORT
Il buffer, fornito in OidRequest, è troppo piccolo per contenere i dati richiesti.
NDIS_STATUS_INVALID_LENGTH
Il valore specificato nel membro InformationBufferLength della struttura NDIS_OID_REQUEST in OidRequest non è corretto per il codice OID_ XXX specificato.
NDIS_STATUS_INVALID_DATA
Uno o più parametri specificati per la richiesta in OidRequest non sono validi.
NDIS_STATUS_NOT_ACCEPTED
Dopo aver chiamato il La funzione MiniportDevicePnPEventNotify per indicare una rimozione a sorpresa, NDIS chiama la funzione MiniportHaltEx del driver. Se il driver riceve richieste OID prima che NDIS chiami MiniportHaltEx, deve completare immediatamente tali richieste con un valore di stato di NDIS_STATUS_NOT_ACCEPTED.
NDIS_STATUS_REQUEST_ABORTED
Il driver miniport ha interrotto l'elaborazione della richiesta. Ad esempio, NDIS ha chiamato la funzione MiniportResetEx .
NDIS_STATUS_INDICATION_REQUIRED
Il driver miniport fornirà uno stato di completamento OID con un'indicazione di stato successiva. Un driver miniport non può restituire NDIS_STATUS_INDICATION_REQUIRED a meno che l'OID specifico non lo consenta. Per determinare se questo stato è consentito, vedere la pagina di riferimento OID. Per altre informazioni sulle NDIS_STATUS_INDICATION_REQUIRED, vedere NDIS_OID_REQUEST e NDIS_STATUS_INDICATION.

Commenti

Un driver specifica il punto di ingresso MiniportOidRequest quando chiama Funzione NdisMRegisterMiniportDriver .

NDIS chiama la funzione MiniportOidRequest per conto proprio o per conto di un driver di protocollo associato che ha chiamato la funzione NdisOidRequest . I driver Miniport devono esaminare la richiesta fornita in OidRequest ed eseguire l'azione richiesta. Per altre informazioni sugli URI gestiti dai driver miniport, vedere NDIS OID.

Si noti che NDIS non convalida il contenuto specifico dell'OID in OidRequest . Pertanto, il driver stesso deve convalidare questi contenuti. Se il driver determina che il valore da impostare è fuori dai limiti, la richiesta non riesce e restituisce NDIS_STATUS_INVALID_DATA.

Se MiniportOidRequest restituisce NDIS_STATUS_PENDING, NDIS non chiamerà MiniportOidRequest con un'altra richiesta, per l'adattatore miniport specificato in MiniportAdapterContext, fino al completamento della richiesta in sospeso.

Nota La logica NDIS check-for-hang non reimposta un driver miniport che non risponde se il driver miniport è in attesa nel contesto della chiamata MiniportOidRequest . Pertanto, i driver miniport non devono attendere il completamento delle operazioni hardware dal contesto della chiamata MiniportOidRequest . Al contrario, il driver può restituire NDIS_STATUS_PENDING e accodare un elemento di lavoro.
 
NDIS chiama MiniportOidRequest in IRQL == PASSIVE_LEVEL .

Esempi

Per definire una funzione MiniportOidRequest , è innanzitutto necessario fornire una dichiarazione di funzione che identifica il tipo di funzione che si sta definendo. Windows fornisce un set di tipi di funzione per i driver. La dichiarazione di una funzione con i tipi di funzione consente di eseguire l'analisi del codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica rilevano gli errori ed è un requisito per la scrittura dei driver per il sistema operativo Windows.

Ad esempio, per definire una funzione MiniportOidRequest denominata "MyOidRequest", usare il tipo di MINIPORT_OID_REQUEST come illustrato nell'esempio di codice seguente:

MINIPORT_OID_REQUEST MyOidRequest;

Implementare quindi la funzione come segue:

_Use_decl_annotations_
NDIS_STATUS
 MyOidRequest(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

Il tipo di funzione MINIPORT_OID_REQUEST è definito nel file di intestazione Ndis.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione MINIPORT_OID_REQUEST nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver NDIS.

Per informazioni sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Windows
Intestazione ndis.h (include Ndis.h)
IRQL PASSIVE_LEVEL
Regole di conformità DDI NdisOidComplete, NdisOidDoubleComplete, NdisOidDoubleRequest, NdisTimedOidComplete, WlanAssociation, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Vedi anche

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportResetEx

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMOidRequestComplete

NdisMRegisterMiniportDriver

NdisOidRequest