Condividi tramite


MINIPORT_DIRECT_OID_REQUEST funzione di callback (ndis.h)

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

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

Sintassi

MINIPORT_DIRECT_OID_REQUEST MiniportDirectOidRequest;

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

Parametri

[in] MiniportAdapterContext

Handle in un'area di contesto allocata dal driver miniport nella funzione MiniportInitializeEx . Il driver miniport usa 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 informazioni richieste nella struttura fornita.

Valore restituito

MiniportDirectOidRequest può restituire uno dei valori di stato seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Set di driver miniport o ottenuto i dati come richiesto.
NDIS_STATUS_PENDING
Il driver miniport completa la richiesta in modo asincrono. Dopo aver completato l'elaborazione, il driver miniport deve chiamare il Funzione NdisMDirectOidRequestComplete per informare NDIS che la richiesta è stata completata.
NDIS_STATUS_INVALID_OID
Richiesta specificata da OidRequest non valida o non riconosciuta.
NDIS_STATUS_NOT_SUPPORTED
La richiesta specificata da OidRequest è stata riconosciuta, ma il driver miniport non lo supporta.
NDIS_STATUS_BUFFER_TOO_SHORT
Il buffer fornito da OidRequest era 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 Funzione MiniportDevicePnPEventNotify per indicare una rimozione delle sorprese, NDIS denominata funzione MiniportHaltEx del driver. Se il driver ha ricevuto richieste OID prima di NDIS chiama MiniportHaltEx, deve completare immediatamente tali richieste con un valore di stato di NDIS_STATUS_NOT_ACCEPTED.
NDIS_STATUS_REQUEST_ABORTED
Il driver miniport ha arrestato 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 dell'OID. Per altre informazioni sulle NDIS_STATUS_INDICATION_REQUIRED, vedere NDIS_OID_REQUEST e NDIS_STATUS_INDICATION.

Commenti

MiniportDirectOidRequest è una funzione facoltativa. Un driver miniport registra questa funzione se gestisce le richieste OID dirette. Un driver specifica il punto di ingresso MiniportDirectOidRequest quando chiama Funzione NdisMRegisterMiniportDriver . Un driver miniport che registra l'oggetto La funzione MiniportCancelDirectOidRequest deve anche registrare MiniportDirectOidRequest.

NDIS chiama la funzione MiniportDirectOidRequest per conto o per conto di un driver di protocollo associato che ha chiamato la funzione NdisDirectOidRequest . I driver miniport devono esaminare la richiesta fornita nel parametro OidRequest e eseguire l'azione richiesta.

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 non è limitato, deve non riuscire la richiesta e restituire NDIS_STATUS_INVALID_DATA.

NDIS non serializza le richieste inviate a MiniportDirectOidRequest con altre richieste OID. Il driver miniport deve essere in grado di gestire più chiamate a MiniportDirectOidRequest quando altre richieste inviate a MiniportOidRequest o MiniportDirectOidRequest sono in sospeso.

Nota La logica check-for-hang di NDIS 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 . Il driver può invece restituire NDIS_STATUS_PENDING e accodarne un elemento di lavoro.
 
NDIS chiama MiniportDirectOidRequest in IRQL <= DISPATCH_LEVEL.

Esempi

Per definire una funzione MiniportDirectOidRequest , è prima necessario specificare 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 usando i tipi di funzione consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una funzione MiniportDirectOidRequest denominata "MyDirectOidRequest ", usare il tipo di MINIPORT_DIRECT_OID_REQUEST come illustrato in questo esempio di codice:

MINIPORT_DIRECT_OID_REQUEST MyDirectOidRequest;

Implementare quindi la funzione come indicato di seguito:

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

Il tipo di funzione MINIPORT_DIRECT_OID_REQUEST viene definito nel file di intestazione Ndis.h. Per identificare in modo più accurato gli errori durante l'esecuzione degli 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 usate le annotazioni applicate al tipo di funzione MINIPORT_DIRECT_OID_REQUEST nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver NDIS.

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

Requisiti

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

Vedi anche

MiniportCancelDirectOidRequest MiniportDevicePnPEventNotify

MiniportDirectOidRequest

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportResetEx

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisDirectOidRequest

NdisMDirectOidRequestComplete

NdisMRegisterMiniportDriver