Condividi tramite


Stati della coda di macchine virtuali NDIS

Questo argomento offre una panoramica degli stati operativi delle code di macchine virtuali NDIS (VMQs). Per altre informazioni sugli stati della coda, vedere l'argomento Stati coda e operazioni nella sezione Scrittura dei driver VMQ .

Per ogni coda, una scheda di rete deve supportare il set di stati operativi seguente:

  • Non definito

  • Allocato

  • Set

  • Paused

  • In esecuzione

  • Arrestare DMA

  • Liberare

Nella figura seguente vengono illustrate le relazioni tra questi stati.

Diagramma che illustra gli stati di coda della macchina virtuale NDIS e le relative relazioni.

Di seguito vengono definiti gli stati dell'adattatore:

Indefinito
Undefined è lo stato iniziale di una coda. In questo stato la coda non viene allocata. Una coda (ad eccezione della coda predefinita che esiste sempre) non è definita fino a quando il driver miniport riceve una richiesta di allocazione della coda. Inoltre, non è definito dopo il completamento dell'operazione gratuita e vengono completate le indicazioni di ricezione che erano state avviate.

Allocata
Una coda si trova nello stato Allocato dopo una richiesta di allocazione e prima che siano presenti filtri impostati nella coda. Il filtro può anche immettere lo stato Allocato se la coda si trova nello stato Set e l'ultimo filtro viene cancellato nella coda. La coda entra nello stato Sospeso se il driver miniport riceve una richiesta completa di allocazione mentre il driver miniport si trova nello stato Allocato. La coda entra nello stato Stop DMA se il driver miniport riceve una richiesta di coda gratuita.

Set
Nello stato Set viene allocata una coda e un filtro minimo viene impostato sulla coda, ma il driver miniport non ha ancora ricevuto un OID completo di allocazione. La coda entra nello stato Esecuzione se riceve una richiesta completa di allocazione. La coda entra nello stato Allocato se l'ultimo filtro nella coda viene cancellato. Si noti che la coda non può essere liberata mentre sono presenti filtri impostati nella coda.

Pausa
Nello stato Sospeso la coda viene allocata, ma il driver miniport non indica i pacchetti ricevuti perché non sono presenti filtri impostati nella coda. Il driver miniport può immettere lo stato Sospeso dallo stato Allocato o dallo stato In esecuzione. La coda entra nello stato Esecuzione quando riceve una richiesta del set di filtri. La coda immette lo stato Stop DMA quando riceve una richiesta di coda gratuita.

Corsa
Nello stato Esecuzione una coda include filtri impostati, l'allocazione della coda è completata e la scheda di rete indica la ricezione dei pacchetti. La coda entra nello stato Sospeso se l'ultimo filtro nella coda viene cancellato. Si noti che la coda non può essere liberata mentre sono presenti filtri impostati nella coda. Inoltre, il driver miniport può arrestare la DMA se l'ultimo filtro è cancellato. Tuttavia, il driver miniport non deve inviare l'indicazione dello stato arrestato DMA in questo caso.

Arrestare DMA
Nello stato Stop DMA il driver miniport ha ricevuto una richiesta di coda gratuita e l'attività DMA deve essere arrestata. Il driver miniport deve inviare un'indicazione di stato arrestata DMA. Dopo che il driver miniport invia l'indicazione di stato, la coda si trova nello stato di liberamento. Si noti che la DMA è stata probabilmente già arrestata quando l'ultimo filtro è stato cancellato. Tuttavia, il driver miniport deve inviare solo l'indicazione dello stato quando riceve la richiesta di coda gratuita.

Liberare
Nello stato freeing , un driver miniport è in attesa di tutte le indicazioni di ricezione in sospeso su una coda per completare e liberare le risorse associate alla coda. Dopo che tutte le risorse vengono liberate, la coda entra nello stato non definito.