Condividi tramite


Funzione NdisMNetPnPEvent (ndis.h)

I driver miniport NDIS (e i driver intermedi registrati come driver miniport) chiamano la funzione NdisMNetPnPEvent per originare un evento di rete Plug and Play, un evento NDIS PnP o Power Management o propagarlo ai driver overlying.

Sintassi

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

Parametri

[in] MiniportAdapterHandle

Handle NDIS fornito dal parametro MiniportAdapterHandle della funzione MiniportInitializeEx . Questo handle identifica l'adattatore miniport interessato dall'evento. Se il chiamante è un driver intermedio, si tratta dell'handle del miniport virtuale.

NetPnPEventNotification

Puntatore a NET_PNP_EVENT_NOTIFICATION struttura, che descrive l'evento Plug and Play di rete, l'evento NDIS PnP o l'evento Power Management.

Importante

Se il campo VPortId di NetPnpEventNotification è impostato su un valore diverso da NDIS_DEFAULT_VPORT_ID, il membro Flags deve essere impostato su NET_EVENT_FLAGS_VPORT_ID_VALID per VPortId per l'effetto.

Valore restituito

NdisMNetPnPEvent può restituire quanto segue:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
I driver overlying elaborano correttamente l'evento Plug and Play o Power Management.
NDIS_STATUS_RESOURCES
I driver overlying non hanno potuto ottenere le risorse di sistema necessarie per soddisfare l'evento Plug and Play o Power Management indicato.
NDIS_STATUS_INVALID_PARAMETER
NDIS non è riuscita la chiamata perché alcuni dei parametri di input non sono validi.
NDIS_STATUS_NOT_SUPPORTED
I driver di protocollo NDIS 6.0 e versioni successive non devono restituire questo stato. NDIS 5. x protocol driver che non supporta Plug and Play può restituire questo stato in risposta a un netEventSetPower per indicare che NDIS deve annullare l'associazione dall'adattatore sottostante.
NDIS_STATUS_INVALID_PORT
NDIS ha avuto esito negativo sulla richiesta perché è stata specificata una porta NDIS non valida in un evento NetEventPortActivation o NetEventPortDeactivation PnP.
NDIS_STATUS_INVALID_PORT_STATE
NDIS ha avuto esito negativo sulla richiesta perché una porta NDIS era in uno stato di porta non valida. Le porte vengono specificate in un evento NetEventPortActivation o NetEventPortDeactivation PnP.
NDIS_STATUS_FAILURE
I tentativi di overlying driver di elaborare l'evento Plug and Play propagato o Power Management non riuscito.
 

Il valore restituito è significativo solo quando l'evento propagato è un evento NetEventQueryPower o NetEventQueryRemoveDevice . Per tutti gli altri eventi propagati, il valore restituito è sempre NDIS_STATUS_SUCCESS.

Se l'evento è NetEventPortActivation e la chiamata ha esito negativo, il chiamante non deve usare le porte associate in ricevere indicazioni o indicazioni sullo stato.

Commenti

Qualsiasi driver miniport può chiamare NdisMNetPnPEvent per generare eventi NetEventPortActivation e NetEventPortDeactivation. Solo i driver intermedi possono effettuare altre notifiche degli eventi.

Nota Per evitare deadlock, un driver NDIS deve eseguire le operazioni seguenti:
 
Per propagare la notifica di un evento di rete Plug and Play, un evento NDIS PnP o un evento Power Management ai driver overlying, un driver intermedio NDIS chiama NdisMNetPnPEvent nel contesto della funzione ProtocolNetPnPEvent del driver.

Se l'evento propagato è netEventQueryPower o NetEventQueryRemoveDevice, il driver intermedio deve controllare il valore NDIS_STATUS restituito da NdisMNetPnPEvent. Se lo stato restituito è NDIS_STATUS_SUCCESS, il driver intermedio deve gestire l'evento e quindi restituire NDIS_STATUS_SUCCESS dalla relativa funzione ProtocolNetPnPEvent . Se lo stato restituito non è NDIS_STATUS_SUCCESS, il driver intermedio deve restituire lo stato segnalato dalla funzione ProtocolNetPnPEvent senza ulteriore elaborazione.

In che modo il driver intermedio elabora un netEventSetPower ricevuto dalla funzione ProtocolNetPnPEvent dipende dallo stato di alimentazione del dispositivo specificato. Se lo stato di alimentazione del dispositivo specificato è NdisDeviceStateD0, il driver intermedio deve gestire l'evento e quindi chiamare NdisMNetPnPEvent. Per qualsiasi altro stato di alimentazione del dispositivo specificato, il driver intermedio deve prima chiamare NdisMNetPnPEvent e quindi gestire l'evento.

Un driver intermedio deve chiamare NdisMNetPnPEvent per propagare un netEventReconfigure o NetEventBindList solo se netEventReconfigure o NetEventBindList è indicato in un protocollo Non NULLBindingContext. Se in netEventReconfigure o NetEventBindList è indicato un protocollo NULLBindingContext, il driver intermedio non deve chiamare NdisMNetPnPEvent per propagare l'evento.

Se un driver intermedio gestisce un netEventReconfigure o un NetEventBindList, deve convalidare tutti i dati associati all'evento.

Un driver intermedio non deve propagare gli eventi NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivation o NetEventPortDeactivation chiamando NdisMNetPnPEvent.

Un driver intermedio NDIS può generare i propri eventi di porta NDIS per miniport virtuali, come appropriato per NetEventPortActivation o NetEventPortDeactivation che riceve nella funzione ProtocolNetPnPEvent .

Per tutti gli altri eventi propagati, la funzione ProtocolNetPnPEvent del driver intermedio deve propagare il valore di stato restituito da NdisMNetPnPEvent.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis.h (includere Ndis.h)
Libreria Ndis.lib
IRQL PASSIVE_LEVEL
Regole di conformità DDI Irql_Protocol_Driver_Function(ndis), NdisMNetPnPEventInOIDRequest(ndis)

Vedi anche

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent