struttura NET_PNP_EVENT (netpnp.h)
La struttura NET_PNP_EVENT descrive un evento di rete Plug and Play (PnP), un evento NDIS PnP o un evento di risparmio energia.
Sintassi
typedef struct _NET_PNP_EVENT {
NET_PNP_EVENT_CODE NetEvent;
PVOID Buffer;
ULONG BufferLength;
ULONG_PTR NdisReserved[4];
ULONG_PTR TransportReserved[4];
ULONG_PTR TdiReserved[4];
ULONG_PTR TdiClientReserved[4];
} NET_PNP_EVENT, *PNET_PNP_EVENT;
Members
NetEvent
Codice evento che descrive l'evento come uno dei seguenti:
NetEventSetPower
Indica che il risparmio energia ha inviato una richiesta Imposta alimentazione, che specifica una transizione a uno stato di alimentazione del sistema. NDIS converte questo stato in uno stato di alimentazione del dispositivo appropriato per il dispositivo.
Per altre informazioni, vedere la sezione Osservazioni.
NetEventQueryPower
Indica che il risparmio energia ha inviato una richiesta di Power Query, che richiede una transizione a uno stato di alimentazione del sistema. NDIS converte questo stato in uno stato di alimentazione del dispositivo appropriato per il dispositivo.
Per altre informazioni, vedere la sezione Osservazioni.
NetEventQueryRemoveDevice
Indica che PnP Manager ha inviato una richiesta di rimozione del dispositivo da query. PnP Manager invia questa richiesta per verificare se un dispositivo può essere rimosso senza interrompere le operazioni.
NetEventCancelRemoveDevice
Indica che PnP Manager ha inviato una richiesta Annulla rimozione dispositivo. PnP Manager invia questa richiesta per annullare la rimozione di un dispositivo dopo che PnP Manager invia una richiesta di rimozione query del dispositivo.
NetEventReconfigure
Indica che la configurazione è stata modificata per un componente di rete. Ad esempio, se un utente, tramite la cartella Network e Dial-up Connections, modifica l'indirizzo IP per TCP/IP, NDIS indica l'evento NetEventReconfigure nel protocollo TCP/IP. Inoltre, un driver intermedio usa in genere questo evento come trigger per chiamare il Funzione NdisIMInitializeDeviceInstanceEx e avviare i miniport virtuali. Per altre informazioni su NetEventReconfigure, vedere NetEventIMReEnableDevice.
NetEventBindList
Indica a un driver di protocollo che l'ordine di elaborazione dell'elenco di associazione è stato riconfigurato. Questo elenco indica un ordine relativo che si applica alle associazioni durante l'elaborazione, ad esempio una richiesta utente che potrebbe essere indirizzata a una di più associazioni. Il buffer passato con questo evento contiene un elenco di nomi di dispositivo formattati come stringhe Unicode con terminazione Null. Il formato di ogni nome del dispositivo è identico al membro AdapterName passato a una chiamata alla funzione ProtocolBindAdapterEx .
NetEventBindsComplete
Indica che un driver di protocollo è associato a tutte le schede di interfaccia di rete a cui può essere associato. NDIS non indicherà altre schede di interfaccia di rete al protocollo, a meno che non sia collegata al sistema una scheda di interfaccia di rete PnP.
NetEventPnPCapabilities
Indica che l'utente ha abilitato o disabilitato le funzionalità di riattivazione dell'adattatore sottostante. L'associazione viene specificata dal parametro ProtocolBindingContext passato alla funzione ProtocolNetPnPEvent .
NetEventPause
Indica che l'associazione di protocollo specificata deve entrare nello stato Sospensione. L'associazione immetterà lo stato Sospeso dopo che NDIS ha completato tutte le richieste di invio in sospeso per l'associazione.
NetEventRestart
Indica che l'associazione di protocollo specificata ha immesso lo stato Riavvio. Dopo che il driver del protocollo è pronto per riprendere le operazioni di invio e ricezione per l'associazione, l'associazione entra nello stato In esecuzione.
NetEventPortActivation
Indica l'attivazione di un elenco di porte associate all'associazione specificata.
NetEventPortDeactivation
Indica la disattivazione di un elenco di porte associate all'associazione specificata.
NetEventIMReEnableDevice
Indica che la configurazione è stata modificata per un miniport virtuale di un driver intermedio NDIS 6.0 o versione successiva. NetEventIMReEnableDevice è simile all'evento NetEventReconfigure , ad eccezione del fatto che il driver intermedio riceve questo evento per un singolo miniport virtuale e l'evento NetEventReconfigure si applica a tutti i miniport virtuali del driver intermedio. Ad esempio, un driver intermedio riceve l'evento NetEventIMReEnableDevice quando un utente disabilita e quindi abilita un singolo miniport virtuale dal Gestione dispositivi o da un'altra origine. Per esempi di risparmio energia del driver intermedio, vedere l'esempio di driver intermedio MUX NDIS e Notify Object driver disponibile nel repository degli esempi di driver di Windows in GitHub.
NetEventNDKEnable
Indica che il kernel diretto di rete (NDK) è attualmente abilitato.
NetEventNDKDisable
Indica che NDK è attualmente disabilitato.
NetEventFilterPreDetach
Indica che un filtro sta per essere scollegato, in modo che il filtro possa eseguire qualsiasi pulizia necessaria che non sia possibile nel gestore FilterDetach (perché l'OID e i percorsi di indicazione vengono chiusi in quel momento).
NetEventBindFailed
Indica che si è verificato un errore dell'evento di associazione.
NetEventSwitchActivate
Indica che l'opzione estendibile Hyper-V ha completato l'attivazione e che le estensioni del commutatore possono ora eseguire query sicure per un'ulteriore configurazione del commutatore. L'indicazione viene usata solo nello stack del commutatore estendibile Hyper-V, rilasciato dal miniport di estensione. Per altre informazioni, vedere Esecuzione di query sulla configurazione del commutatore estendibile Hyper-V e NDIS_SWITCH_PARAMETERS .
NetEventInhibitBindsAbove
Evento sincrono che impedisce l'associazione di altri filtri e protocolli all'adattatore miniport. Tutti i filtri o i protocolli associati in precedenza non verranno associati prima del completamento dell'evento. Di seguito sono riportate le regole di utilizzo.
- Evitare di lasciare l'adattatore miniport nello stato di inibire, per più di 1000 millisecondi.
- Questo evento può essere generato solo dopo l'inizio di MiniportInitializeEx e non deve essere generato dopo la restituzione di MiniportHaltEx .
- Questo evento può essere generato solo quando l'adattatore miniport si trova in uno stato D0.
- Poiché questo evento blocca, non deve essere generato da alcun contesto che provocherebbe un deadlock.
- I blocchi non devono essere mantenuti durante l'emissione di questo evento.
- Questo evento deve essere emesso al PASSIVE_LEVEL.
NetEventAllowBindsAbove
Evento asincrono che inverte gli effetti di NetEventInhibitBindsAbove. Di seguito sono riportate le regole di utilizzo.
- Questo evento può essere generato solo dopo l'inizio di MiniportInitializeEx e non deve essere generato dopo la restituzione di MiniportHaltEx .
- Questo evento può essere generato solo quando l'adattatore miniport si trova in uno stato D0.
- I blocchi non devono essere mantenuti durante l'emissione di questo evento.
- Questo evento deve essere emesso al PASSIVE_LEVEL.
NetEventRequirePause
È necessario sospendere un evento sincrono che indica i protocolli e i filtri che includono l'adattatore miniport. I protocolli e i filtri e l'adattatore miniport vengono sospesi quando viene restituita la routine NdisMNetPnPEvent . Di seguito sono riportate le regole di utilizzo.
- Evitare il ritardo tra gli eventi NetEventAllowStart e NetEventRequirePause per più di 1000 millisecondi per evitare ritardi nelle applicazioni utente.
- Questo evento può essere generato solo dopo l'inizio di MiniportInitializeEx e non deve essere generato dopo la restituzione di MiniportHaltEx .
- Non esiste alcuna garanzia che NDIS chiamerà MiniportPause dopo l'emissione di questo evento. In particolare, se l'adattatore miniport è già sospeso, NDIS non introduce un ciclo di pausa di avvio aggiuntivo. Ciò significa che la quantità di volte in cui viene chiamato MiniportPause non è maggiore di, minore o uguale alla quantità di emissione di questo evento.
- Poiché questo evento blocca, non deve essere generato da alcun contesto che provocherebbe un deadlock.
- I blocchi non devono essere mantenuti durante l'emissione di questo evento.
NetEventAllowStart
Un evento asincrono che indica i protocolli e i filtri, tra cui l'adattatore miniport, non deve essere sospeso. Di seguito sono riportate le regole di utilizzo. Non esiste uno stato di sospensione garantito per qualsiasi driver nei protocolli e nei filtri dopo la restituzione della routine NdisMNetPnPEvent .
- Questo evento può essere rilasciato solo dopo l'inizio di MiniportInitializeEx e non deve essere rilasciato dopo la restituzione di MiniportHaltEx .
- Poiché questo evento blocca, non deve essere rilasciato da alcun contesto che causerebbe un deadlock.
- I blocchi non devono essere mantenuti durante l'emissione di questo evento.
Buffer
Indirizzo di un buffer che contiene informazioni specifiche dell'evento indicato nel membro NetEvent . Per ogni tipo di evento, il buffer contiene le informazioni seguenti:
NetEventSetPower
Il buffer contiene lo stato di alimentazione del dispositivo a cui il dispositivo sta passando.
Quando NDIS chiama la funzione ProtocolNetPnPEvent di un driver di protocollo, lo stato del dispositivo è NDIS_DEVICE_POWER_STATE, che può essere uno dei valori seguenti:
NdisDeviceStateUnspecified
Il dispositivo di rete non supporta la gestione delle energia.
NdisDeviceStateD0
Lo stato completamente alimentato, in cui il dispositivo offre funzionalità complete e prestazioni.
NdisDeviceStateD1
Stato di bassa potenza, in cui non vengono rispettate le richieste dall'host, i dati ricevuti dal dispositivo non vengono trasferiti nella memoria host e non possono verificarsi interruzioni. Potrebbe essere perso un contesto del dispositivo. A seconda delle funzionalità della scheda di interfaccia di rete e del relativo driver miniport, il dispositivo potrebbe essere in grado di generare un segnale di riattivazione.
NdisDeviceStateD2
Uno stato a bassa potenza simile a NdisDeviceStateD1, ad eccezione del fatto che in genere vengono salvati più potenza e meno contesto e più tempo è necessario per passare allo stato completamente alimentato.
NdisDeviceStateD3
Stato disattivato, in cui l'alimentazione è stata completamente rimossa dal dispositivo.
Per i driver di protocollo, NdisDeviceStateD0 significa che la scheda di interfaccia di rete è completamente alimentato ed è disponibile per le normali operazioni. Qualsiasi altro stato del dispositivo significa che il dispositivo non è completamente alimentato e non è disponibile per l'invio e la ricezione dei dati di rete.
NetEventQueryPower
Il buffer contiene lo stato di alimentazione del dispositivo richiesto per il dispositivo. Lo stato del dispositivo è NDIS_DEVICE_POWER_STATE (descritto nella descrizione del valore NetEventSetPower ).
NetEventQueryRemoveDevice
Il contenuto del buffer è NULL.
NetEventCancelRemoveDevice
Il contenuto del buffer è NULL.
NetEventReconfigure
Il buffer può contenere dati specifici del protocollo. Il driver del protocollo è responsabile della convalida di questi dati.
NetEventBindList
Il buffer contiene un elenco di associazioni modificato per il componente di rete che NET_PNP_EVENT_NOTIFICATION struttura viene passata. L'elenco di binding, che è una serie di stringhe Unicode con terminazione null, ha un formato REG_MULTI_SZ. Ognuna delle stringhe è un nome dell'adapter. I client TDI associati a un protocollo usano questo elenco di binding per riordinare i binding. Il driver del protocollo è responsabile della convalida di questo elenco.
NetEventBindsComplete
Il contenuto del buffer è NULL.
NetEventPnPCapabilities
Il buffer è un ULONG che contiene una maschera di bit. Quando il flag di NDIS_DEVICE_WAKE_UP_ENABLE è impostato nella maschera di bit, le funzionalità di riattivazione della scheda di interfaccia di rete sono abilitate. In caso contrario, le funzionalità di riattivazione della scheda di interfaccia di rete sono disabilitate. L'associazione viene specificata dal parametro ProtocolBindingContext passato a ProtocolNetPnPEvent. Se impostato su zero, questo flag indica che le funzionalità di riattivazione della scheda di interfaccia di rete sono disabilitate.
NetEventPause
Il buffer contiene un oggetto NDIS_PROTOCOL_PAUSE_PARAMETERS struttura.
NetEventRestart
Il buffer potrebbe contenere NULL o un oggetto NDIS_PROTOCOL_RESTART_PARAMETERS struttura. NDIS fornisce un puntatore a una struttura NDIS_RESTART_ATTRIBUTES nel membro RestartAttributes della struttura NDIS_PROTOCOL_RESTART_PARAMETERS.
NetEventPortActivation
Il buffer contiene la prima voce di un elenco di strutture NDIS_PORT che identificano le porte che verranno attivate da NDIS. È possibile usare il membro Successivo della struttura NDIS_PORT per ottenere la struttura successiva nell'elenco.
NetEventPortDeactivation
Il buffer contiene una matrice di numeri di porta, di tipo NDIS_PORT_NUMBER (definito come ULONG), che identificano le porte NDIS disattivate. Per calcolare il numero di elementi nella matrice, dividere il valore del membro BufferLength , che si trova nella struttura NET_PNP_EVENT specificata nel membro NetPnPEvent di NET_PNP_EVENT_NOTIFICATION, per sizeof(NDIS_PORT_NUMBER).
NetEventIMReEnableDevice
Il buffer contiene un puntatore a una variabile di tipo NDIS_STRING contenente una stringa Unicode con terminazione null che assegna un nome all'oggetto dispositivo di un miniport virtuale per il dispositivo abilitato. La stringa è un nome percorso completo, ad esempio \Device\DeviceName.
NetEventNDKEnable
Il membro buffer è NULL.
NetEventNDKDisable
Il membro buffer è NULL.
NetEventFilterPreDetach
Il membro buffer è NULL.
NetEventBindFailed
Il buffer contiene una struttura NDIS_BIND_FAILED_NOTIFICATION .
NetEventSwitchActivate
Il contenuto del buffer è NULL.
NetEventAllowBindsAbove
Il contenuto del buffer è NULL.
NetEventInhibitBindsAbove
Il contenuto del buffer è NULL.
NetEventAllowStart
Il contenuto del buffer è NULL.
NetEventRequirePause
Il contenuto del buffer è NULL.
BufferLength
Numero di byte di informazioni specifiche dell'evento in Buffer.
NdisReserved[4]
Area riservata per l'uso da parte di NDIS.
TransportReserved[4]
Area riservata per l'uso da parte del conducente del trasporto.
TdiReserved[4]
Area riservata per l'uso da TDI.
TdiClientReserved[4]
Area riservata per l'uso da parte di un client TDI.
Commenti
In NDIS 6.0 e versioni successive, quando il sistema operativo genera un evento PnP di sistema o un evento di risparmio energia a un oggetto dispositivo di destinazione che rappresenta un adattatore miniport, NDIS converte l'evento in un NET_PNP_EVENT_NOTIFICATION struttura. Il membro NetPnPEvent della struttura NET_PNP_EVENT_NOTIFICATION è una struttura NET_PNP_EVENT .
NDIS passa un puntatore alla struttura NET_PNP_EVENT a ogni driver di protocollo associato alla scheda miniport chiamando la funzione ProtocolNetPnPEvent del driver del protocollo. Il driver del protocollo deve salvare questo puntatore, perché il puntatore è un parametro di input alla funzione NdisCompleteNetPnPEvent , che il driver chiama per completare la chiamata a ProtocolNetPnPEvent in modo asincrono.
NDIS passa un puntatore alla struttura NET_PNP_EVENT a ogni driver di filtro associato alla scheda miniport chiamando la funzione FilterNetPnPEvent del driver di filtro. Il driver di filtro non deve salvare questo puntatore perché il driver deve completare la chiamata a FilterNetPnPEvent in modo sincrono.
A partire da NDIS 6.30, il driver di protocollo o filtro deve seguire queste linee guida quando NDIS chiama le funzioni ProtocolNetPnPEvent o FilterNetPnPEvent :
-
Se il membro NetEvent della struttura NET_PNP_EVENT è impostato su NetEventSetPower, il driver deve interrompere la generazione di nuove richieste di I/O. Inoltre, il driver non deve attendere il completamento di eventuali richieste di I/O in sospeso.
Dopo che il protocollo o il driver di filtro vengono restituiti da ProtocolNetPnPEvent o FilterNetPnPEvent, NDIS non sospende e riavvia questi driver durante le transizioni con stato di alimentazione se le condizioni seguenti sono vere:
- Il driver miniport sottostante imposta il flag di NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND nella struttura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Il driver passa un puntatore a questa struttura nella chiamata alla funzione NdisMSetMiniportAttributes .
- Tutti i driver di filtro collegati al driver miniport supportano NDIS 6.30 o versioni successive di NDIS.
- Tutti i driver di protocollo associati al driver miniport supportano NDIS 6.30 o versioni successive di NDIS.
- Se il membro NetEvent della struttura NET_PNP_EVENT è impostato su NetEventSetPower o NetEventQueryPower, il driver non deve attendere il completamento di eventuali richieste di I/O in sospeso.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato in NDIS 5.1 e NDIS 6.0 e versioni successive. Per altre informazioni sulla versione NDIS 5.1 di questa struttura, vedere NET_PNP_EVENT (NDIS 5.1). |
Intestazione | netpnp.h (include Ndis.h, Netpnp.h) |
Vedi anche
NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS NdisIMInitializeDeviceInstanceExEsecuzione di query sulla configurazione del commutatore estendibile Hyper-V