Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para cada cola, un adaptador de red debe admitir el siguiente conjunto de estados operativos:
Indefinido
No se asigna la cola. Para asignar una cola, un controlador superior envía una solicitud OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE.
Asignado
El estado Asignado es el estado inicial de una cola. Cuando una cola se encuentra en el estado Asignado, el controlador superior normalmente establece filtros en la cola usando el OID OID_RECEIVE_FILTER_SET_FILTER o completa la asignación de cola con la solicitud OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE.
Configurar
En el estado Set, una cola tiene al menos un filtro asignado, pero el controlador superior no ha enviado el OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE.
Corriente
En el estado En ejecución, la cola tiene filtros configurados, la asignación de cola está completa y el adaptador minipuerto está indicando la recepción de paquetes para la cola.
Pausado
En el estado Pausado, el adaptador de red no indica los datos de red recibidos para la cola. O bien no se establecieron filtros en la cola antes de la solicitud OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE, o todos los filtros establecidos en la cola se borraron con la solicitud OID OID_RECEIVE_FILTER_CLEAR_FILTER.
DMA detenido.
En el estado DMA detenido, un controlador de miniporte recibió una solicitud de OID OID_RECEIVE_FILTER_FREE_QUEUE. Cuando se detiene el DMA y el controlador ha emitido la indicación de estado detenido por DMA (con NDIS_STATUS_RECEIVE_QUEUE_STATE), el controlador entra en el estado de liberación.
Liberar
En el estado Freeing, un controlador de miniporte completa las operaciones necesarias para detener las operaciones de envío y recepción de la cola, liberando los recursos asociados. Una vez completadas todas las indicaciones de recepción pendientes, la cola se elimina y queda como indefinida.
En la tabla siguiente, los encabezados son los estados de la cola. Los eventos principales se muestran en la primera columna. El resto de las entradas de la tabla especifican el siguiente estado en el que entra la cola después de que se produzca un evento dentro de un estado. Las entradas en blanco representan combinaciones de estado o evento no válidas.
| Evento \ Estado | Indefinido | Asignado | Establecer | Correr | En pausa | Detener DMA | Liberar |
|---|---|---|---|---|---|---|---|
OID_RECEIVE_FILTER_ALLOCATE_QUEUE - método (set) |
Asignado |
||||||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS: solicitud de método (petición de consulta) |
Asignado |
Establecer |
Correr |
En pausa |
|||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS: establecer solicitud |
Asignado |
Establecer |
Correr |
En pausa |
|||
OID_RECEIVE_FILTER_SET_FILTER: solicitud de método (establecer) |
Establecer |
Establecer |
Correr |
Correr |
|||
OID_RECEIVE_FILTER_CLEAR_FILTER: establecer solicitud (último filtro) |
Asignado |
En pausa |
|||||
OID_RECEIVE_FILTER_CLEAR_FILTER: establecer solicitud (no el último filtro) |
Establecer |
Correr |
|||||
OID_RECEIVE_FILTER_ENUM_FILTERS: método (solicitud de consulta) |
Asignado |
Establecer |
Correr |
En pausa |
|||
OID_RECEIVE_FILTER_PARAMETERS: solicitud de método (consulta) |
Establecer |
Correr |
|||||
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE: solicitud de método (set) |
En pausa |
Correr |
|||||
Recepción de paquetes |
Correr |
||||||
OID_RECEIVE_FILTER_FREE_QUEUE establecer solicitud |
Detener DMA |
Detener DMA |
|||||
DMA está detenido y se envió la indicación de estado de NDIS_STATUS_RECEIVE_QUEUE_STATE. Nota: DMA probablemente ya estaba detenido en estado Asignado o en Pausa. |
Liberar |
||||||
Se completan todas las indicaciones de recepción y se liberan los recursos de cola. |
Indefinido |
Nota Los eventos enumerados en la tabla anterior incluyen algunos eventos secundarios que no producen un cambio de estado. Estos eventos secundarios se incluyen en la tabla para especificar los estados en los que estos eventos son válidos.
Los eventos de cola principal se definen de la manera siguiente:
OID_RECEIVE_FILTER_ALLOCATE_QUEUE: solicitud de método (set)
Un controlador superpuesto asignó una cola. Para obtener más información sobre la asignación de colas, consulte Asignar y liberar colas de máquinas virtuales.
OID_RECEIVE_FILTER_SET_FILTER: solicitud de establecer un método
Un controlador superpuesto configura un filtro en una cola. Si el controlador superior no ha enviado el OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE, la cola se encuentra en el estado de configuración. De lo contrario, la cola está en el estado "En ejecución". Para obtener más información sobre cómo establecer filtros en colas, consulte Configuración y borrado de filtros de VMQ.
OID_RECEIVE_FILTER_CLEAR_FILTER: establecer solicitud
Un controlador superpuesto eliminó un filtro en una cola. Si se ha borrado el último filtro en una cola en ejecución, se puede detener el DMA, las indicaciones de recepción se detienen y la cola debería limpiarse de los datos recibidos existentes. Para obtener más información sobre cómo borrar filtros en colas, consulte Configuración y borrado de filtros de VMQ.
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE: solicitud de método (establecer)
Un controlador superior completó la asignación de la cola. Si hay filtros establecidos en la cola, esta se encuentra en el estado de En ejecución y se pueden empezar a recibir indicaciones. Para más información sobre cómo completar la asignación de colas, consulte Asignación y Liberación de Colas de Máquinas Virtuales.
Recepción de paquetes
Un miniport driver solo puede indicar paquetes de recepción para una cola que se encuentra en el estado de ejecución. Para obtener más información sobre cómo indicar los datos recibidos para las colas, consulte Operaciones de envío y recepción de VMQ.
OID_RECEIVE_FILTER_FREE_QUEUE establecer solicitud.
Un controlador superior liberó una cola. El controlador emite la indicación de estado detenido por DMA (con NDIS_STATUS_RECEIVE_QUEUE_STATE), el controlador entra en estado de freeing. Cuando se completan todas las indicaciones de recepción pendientes y se liberan los recursos de la cola, la cola no está definida.