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.
Questo evento è disponibile a partire da NDIS versione 6.50 e deve essere usato con la versione V2 o successiva di NET_PNP_EVENT. Questo evento può essere rilasciato facoltativamente da un driver miniport. I protocolli e i filtri non possono ricevere questo evento o generarlo.

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.
Questo evento è disponibile a partire da NDIS versione 6.50 e deve essere usato con la versione V2 o successiva di NET_PNP_EVENT. Questo evento può essere rilasciato facoltativamente da un driver miniport. I protocolli e i filtri non possono ricevere questo evento o generarlo.

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.
Questo evento è disponibile a partire da NDIS versione 6.50 e deve essere usato con V2 o versione successiva di NET_PNP_EVENT. Questo evento può essere rilasciato facoltativamente da un driver miniport. I protocolli e i filtri non possono ricevere questo evento o rilasciarlo.

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.
Questo evento è disponibile a partire da NDIS versione 6.50 e deve essere usato con V2 o versione successiva di NET_PNP_EVENT. Questo evento può essere rilasciato facoltativamente da un driver miniport. I protocolli e i filtri non possono ricevere questo evento o rilasciarlo.

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.

Nota Se il buffer è NULL, gli attributi di riavvio non sono stati modificati dopo il riavvio precedente.
 

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.
Il membro NetEvent nella struttura NET_PNP_EVENT identifica il tipo di evento di Plug and Play o risparmio energia. Il buffer contiene informazioni specifiche del tipo di evento.

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

FilterNetPnPEvent

NDIS_BIND_FAILED_NOTIFICATION

NDIS_PORT

NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS

NDIS_RESTART_ATTRIBUTES

NDIS_SWITCH_PARAMETERS

NET_PNP_EVENT_NOTIFICATION

NdisCompleteNetPnPEvent

NdisIMInitializeDeviceInstanceEx

ProtocolBindAdapterEx

ProtocolNetPnPEvent

Esecuzione di query sulla configurazione del commutatore estendibile Hyper-V