Condividi tramite


Panoramica della sospensione selettiva NDIS

A partire da NDIS 6.30, l'interfaccia di sospensione selettiva NDIS consente a NDIS di sospendere una scheda di rete inattiva passando la scheda a uno stato a basso consumo. Ciò consente al sistema di ridurre la CPU e il sovraccarico di alimentazione dell'adattatore.

La sospensione selettiva NDIS è particolarmente utile per le schede di rete basate sull'interfaccia USB v1.1 e v2.0. Questi adattatori vengono continuamente sottoposto a polling per i pacchetti ricevuti indipendentemente dal fatto che siano attivi o inattive. Sospendendo le schede USB inattive, il sovraccarico della CPU può essere ridotto fino al 10%.

La sospensione selettiva NDIS si basa sulla tecnologia di sospensione selettiva USB . Tuttavia, la sospensione selettiva NDIS è progettata per essere indipendente dal bus. In questo modo, i pacchetti di richiesta di I/O indipendenti dal bus per la sospensione selettiva vengono emessi da NDIS. Questo rende il conducente miniport responsabile del rilascio di eventuali IRP necessari per la sospensione selettiva su un bus specifico. Ad esempio, i driver miniport per le schede di rete USB rilasciano l'IRP (richiesta di inattività USB) specifica del bus USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) al driver del bus USB durante un'operazione di sospensione selettiva.

NDIS e il driver miniport partecipano alla sospensione selettiva NDIS nel modo seguente:

  1. Se un driver miniport ha registrato il supporto per la sospensione selettiva NDIS, NDIS monitora l'attività di I/O della scheda di rete. L'attività di I/O include indicazioni per ricevere pacchetti, inviare completamenti di pacchetti e richieste OID gestite dal driver miniport.

  2. NDIS considera la scheda di rete inattiva se è stata inattiva per un periodo di timeout di inattività specificato. In questo caso, NDIS avvia un'operazione di sospensione selettiva inviando una notifica di inattività al driver miniport per eseguire la transizione della scheda di rete a uno stato a basso consumo.

    Nota

    La lunghezza del periodo di timeout di inattività viene specificata dal valore della parola chiave INF standardizzata *SSIdleTimeout . Per altre informazioni su questa parola chiave, vedere Parole chiave INF standardizzate per la sospensione selettiva NDIS.  

    Per altre informazioni su come NDIS determina che una scheda di rete è inattiva, vedere How NDIS Detects Idle Network Adapters.For more information about how NDIS detects Idle Network Adapters.

  3. NDIS invia la notifica di inattività al driver miniport chiamando la funzione del gestore MiniportIdleNotification del driver. Quando questa funzione viene chiamata, il driver miniport determina se la scheda di rete può passare a uno stato a basso consumo. Il conducente miniport esegue questa determinazione in modo specifico dell'autobus.

    Ad esempio, un driver miniport USB determina se la scheda di rete può passare a uno stato a basso consumo inviando un IRP di richiesta di inattività USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) al driver del bus USB sottostante. In questo modo il driver del bus informa che la scheda di rete è inattiva e conferma se la scheda può essere passata a uno stato a basso consumo.

    Nota

    Il driver miniport deve specificare una routine di callback e completamento per l'IRP della richiesta di inattività USB.

    Per altre informazioni su come un driver miniport gestisce una notifica di inattività, vedere Gestione della notifica di inattività selettiva NDIS.

  4. Dopo che il driver miniport conferma che la scheda di rete può passare a uno stato a basso consumo, chiama NdisMIdleNotificationConfirm. In questa chiamata, il driver miniport specifica lo stato di alimentazione più basso a cui la scheda di rete può passare.

  5. Quando viene chiamato NdisMIdleNotificationConfirm , NDIS invia richieste OID al driver miniport per preparare l'adattatore per la transizione a uno stato a basso consumo. NDIS rilascia anche irP al driver del bus sottostante per impostare l'adattatore su uno stato a basso consumo.

  6. Dopo che la scheda di rete è stata sospesa, rimane in uno stato di bassa potenza fino a quando non viene annullata la notifica di inattività in sospeso.

    NDIS annulla la notifica di inattività in sospeso chiamando la funzione del gestore MiniportCancelIdleNotification del driver miniport . NDIS chiama questa funzione del gestore se una o più delle condizioni seguenti sono vere:

    • NDIS rileva l'invio di richieste di pacchetti o richieste OID inviate al driver miniport da driver overlying protocol o filter.

    • La scheda di rete segnala un evento di riattivazione. Ciò può verificarsi quando l'adattatore riceve un pacchetto o rileva una modifica dello stato della connessione multimediale.

    Dopo la sospensione della scheda di rete, il driver miniport può anche completare la notifica di inattività per riprendere la scheda a uno stato di alimentazione completa. I motivi di questa operazione sono specifici della progettazione e dei requisiti del driver e dell'adattatore.

    Per altre informazioni su come NDIS annulla la notifica di inattività, vedere Annullamento della notifica di inattività selettiva NDIS.

    Per altre informazioni su come il driver miniport completa la notifica di inattività, vedere Completamento della notifica di inattività selettiva NDIS.

  7. Quando viene chiamata la funzione del gestore MiniportCancelIdleNotification , il driver miniport determina se la scheda di rete può riprendere a uno stato di alimentazione completa. Il driver annulla anche eventuali IRP specifici del bus che potrebbero essere stati rilasciati in precedenza per la notifica di inattività.

    La determinazione che la scheda di rete può passare a uno stato di alimentazione completa è specifica del bus. Ad esempio, quando viene chiamato MiniportCancelIdleNotification, il miniport USB deve annullare l'IRP della richiesta di inattività USB rilasciata in precedenza. Non appena il driver USB ha annullato l'IRP, chiama la routine di completamento di IRP per verificare che l'IRP venga annullato e che la scheda di rete possa riprendere a uno stato di alimentazione completa. Nel contesto della routine di completamento, il driver miniport chiama NdisMIdleNotificationComplete.

    Quando il miniport determina che la scheda di rete può riprendere a uno stato di alimentazione completa, chiama NdisMIdleNotificationComplete. Questa chiamata notifica all'NDIS che la notifica di inattività è stata completata. NDIS procede quindi con il completamento dell'operazione di sospensione selettiva passando la scheda di rete a uno stato di alimentazione completa.

  8. Quando viene chiamato NdisMIdleNotificationComplete , NDIS invia richieste OID al driver miniport per preparare l'adattatore per la transizione a uno stato di alimentazione completa. NDIS rilascia anche irP al driver del bus sottostante per impostare l'adattatore su uno stato di alimentazione completa.

  9. Quando la scheda di rete riprende a uno stato di alimentazione completa, l'operazione di sospensione selettiva viene completata. NDIS riprende il monitoraggio dell'attività di I/O della scheda di rete. Se la scheda diventa inattiva dopo un altro periodo di timeout di inattività, NDIS invia una notifica di inattività al driver miniport per sospendere la scheda di rete.