États de file d’attente des machines virtuelles NDIS
Cette rubrique fournit une vue d’ensemble des états opérationnels des files d’attente de machines virtuelles NDIS. Pour plus d’informations sur les états de file d’attente, consultez la rubrique États et opérations de file d’attente dans la section Écriture de pilotes VMQ .
Pour chaque file d’attente, une carte réseau doit prendre en charge l’ensemble d’états opérationnels suivant :
Indéfini
Allocated
Définissez
Suspendu
En cours d’exécution
Arrêter DMA
Libérer
La figure suivante montre les relations entre ces états.
Les éléments suivants définissent les états de l’adaptateur :
Indéfini
Undefined est l’état initial d’une file d’attente. Dans cet état, la file d’attente n’est pas allouée. Une file d’attente (à l’exception de la file d’attente par défaut qui existe toujours) n’est pas définie jusqu’à ce que le pilote miniport reçoive une demande d’allocation de file d’attente. En outre, elle n’est pas définie une fois l’opération gratuite terminée et toutes les indications de réception qui avaient été démarrées sont terminées.
Allocated
Une file d’attente est à l’état Alloué après une demande d’allocation et avant que des filtres ne soient définis sur la file d’attente. Le filtre peut également entrer dans l’état Alloué si la file d’attente est à l’état Définir et que le dernier filtre est effacé sur la file d’attente. La file d’attente passe à l’état Suspendu si le pilote miniport reçoit une demande d’allocation complète alors que le pilote miniport est à l’état Alloué. La file d’attente passe à l’état Arrêter DMA si le pilote miniport reçoit une demande de file d’attente gratuite.
Définissez
Dans l’état Définir , une file d’attente est allouée et au moins un filtre est défini sur la file d’attente, mais le pilote miniport n’a pas encore reçu d’OID complet d’allocation. La file d’attente passe à l’état En cours d’exécution si elle reçoit une demande d’allocation complète. La file d’attente passe à l’état Alloué si le dernier filtre de la file d’attente est effacé. Notez que la file d’attente ne peut pas être libérée tant que des filtres sont définis sur la file d’attente.
Pause
Dans l’état Suspendu , la file d’attente est allouée, mais son pilote miniport n’indique pas les paquets reçus, car aucun filtre n’est défini sur la file d’attente. Le pilote miniport peut entrer dans l’état Suspendu à partir de l’état Alloué ou de l’état En cours d’exécution. La file d’attente passe à l’état En cours d’exécution lorsqu’elle reçoit une demande de jeu de filtres. La file d’attente passe à l’état Arrêter DMA lorsqu’elle reçoit une demande de file d’attente gratuite.
En cours d’exécution
Dans l’état En cours d’exécution , une file d’attente a des filtres définis, l’allocation de la file d’attente est terminée et la carte réseau indique les paquets de réception. La file d’attente passe à l’état Suspendu si le dernier filtre de la file d’attente est effacé. Notez que la file d’attente ne peut pas être libérée tant que des filtres sont définis sur la file d’attente. En outre, le pilote miniport peut arrêter le DMA si le dernier filtre est effacé. Toutefois, le pilote miniport ne doit pas envoyer l’indication d’état arrêté DMA dans ce cas.
Arrêter DMA
Dans l’état Arrêter DMA , le pilote miniport a reçu une demande de file d’attente gratuite et l’activité DMA doit être arrêtée. Le pilote miniport doit envoyer une indication d’état arrêté DMA. Une fois que le pilote miniport a envoyé l’indication status, la file d’attente est dans l’état Freeing. Notez que le DMA a probablement déjà été arrêté lorsque le dernier filtre a été effacé. Toutefois, le pilote miniport ne doit envoyer l’indication status que lorsqu’il reçoit la demande de file d’attente gratuite.
Libérer
Dans l’état Freeing , un pilote miniport attend que toutes les indications de réception en attente sur une file d’attente se terminent et libèrent les ressources associées à la file d’attente. Une fois toutes les ressources libérées, la file d’attente passe à l’état Non défini.