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 |
---|---|
|
I driver overlying elaborano correttamente l'evento Plug and Play o Power Management. |
|
I driver overlying non hanno potuto ottenere le risorse di sistema necessarie per soddisfare l'evento Plug and Play o Power Management indicato. |
|
NDIS non è riuscita la chiamata perché alcuni dei parametri di input non sono validi. |
|
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 ha avuto esito negativo sulla richiesta perché è stata specificata una porta NDIS non valida in un evento NetEventPortActivation o NetEventPortDeactivation PnP. |
|
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. |
|
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.
- La funzione MiniportOidRequest non deve chiamare NdisMNetPnPEvent.
- Se la funzione MiniportOidRequest restituisce NDIS_STATUS_PENDING per una richiesta OID, il driver NDIS non deve chiamare NdisMNetPnPEvent fino al termine della richiesta OID chiamando NdisMOidRequestComplete.
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) |