Condividi tramite


funzione MINIPORT_SYNCHRONOUS_OID_REQUEST (ndis.h)

NDIS chiama il driver miniport MiniportSynchronousOidRequest funzione di callback per emettere una richiesta OID sincrona.

Sintassi

NDIS_STATUS MINIPORT_SYNCHRONOUS_OID_REQUEST(
  [in] NDIS_HANDLE      MiniportAdapterContext,
  [in] NDIS_OID_REQUEST *OidRequest
);

Parametri

[in] MiniportAdapterContext

Handle per un'area di contesto allocata dal driver miniport nella relativa 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 le informazioni richieste nella struttura fornita.

Valore restituito

MiniportSynchronousOidRequest 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_INVALID_OID
La richiesta che OidRequest specificato non è valida o non è stata riconosciuta.
NDIS_STATUS_NOT_SUPPORTED
La richiesta che OidRequest specificato è stata riconosciuta, ma il driver miniport non lo supporta.
NDIS_STATUS_BUFFER_TOO_SHORT
Il buffer che OidRequest fornito 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 codiceOID_ Xxx specificato.
NDIS_STATUS_INVALID_DATA
Uno o più parametri specificati per la richiesta in OidRequest non sono validi.
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.
NDIS_STATUS_NOT_ACCEPTED
Dopo aver chiamato il funzione MiniportDevicePnPEventNotify per indicare una rimozione a sorpresa, NDIS ha chiamato funzione MiniportHaltEx del driver. Se il driver ha ricevuto richieste OID prima che NDIS chiami MiniportHaltEx, deve completare immediatamente tali richieste con un valore di stato di NDIS_STATUS_NOT_ACCEPTED.

I driver Miniport non sono sempre necessari per restituire NDIS_STATUS_NOT_ACCEPTED per tutti gli OID dopo una rimozione a sorpresa, ma in questo modo aiuta a spiegare perché la chiamata non è riuscita.

Osservazioni

miniportSynchronousOidRequest è una funzione facoltativa. Un driver miniport registra questa funzione se gestisce le richieste OID sincrone. Il driver specifica il punto di ingresso miniportSynchronousOidRequest quando chiama il NdisMRegisterMiniportDriver funzione, utilizzando il membro SynchronousOidRequestHandler della struttura NDIS_MINIPORT_DRIVER_CHARACTERISTICS.

I driver Miniport non devono restituire NDIS_STATUS_PENDING o NDIS_STATUS_REQUEST_ABORTED da MiniportSynchronousOidRequest. Le richieste OID sincrone non possono essere pennate o annullate.

I driver Miniport possono restituire NDIS_STATUS_NOT_ACCEPTED dopo le chiamate NDIS MiniportDevicePnPEventNotify per notificare al driver la rimozione a sorpresa del dispositivo. Tuttavia, i driver miniport possono comunque completare la richiesta OID con un codice di stato diverso, se è possibile farlo. Per altre info, vedi la documentazione specifica di ogni OID.

I driver Miniport devono completare rapidamente le richieste OID sincrone senza bloccare, attendere o dormire. Le richieste OID sincrone vengono usate solo per operazioni a bassa latenza e i driver miniport devono cercare di completarli entro diversi millisecondi. La maggior parte delle richieste OID viene recapitata a MiniportOidRequest, che è consentita per pendare o attendere durate più lunghe.

NDIS non serializza le richieste OID sincrone tra loro, rispetto ad altre richieste OID, contro MiniportPause, in MiniportResetExo contro le transizioni di alimentazione. È responsabilità del driver miniport implementare la propria sincronizzazione e di interrompere le richieste recapitate in un momento in cui la richiesta non può essere gestita correttamente.

NDIS serializza le richieste OID sincrone su MiniportHaltEx; NDIS garantisce che nessuna richiesta OID sincrona sarà attiva una volta richiamata MiniportHaltEx.

I driver Miniport che implementano la sospensione selettiva NDIS non sono compatibili con gli OID sincroni e non devono registrare un gestore MiniportSynchronousOidRe quest.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 1709
piattaforma di destinazione Finestre
intestazione ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedere anche

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

miniportPause

MiniportResetEx

NDIS_MINIPORT_DRIVER_CHARACTERISTICS

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMRegisterMiniportDriver

interfaccia di richiesta OID sincrona in NDIS 6.80