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.
Siga las instrucciones de este tema para administrar las estructuras de NET_RING y sus elementos durante la transferencia de datos de red. Las reglas de este tema describen qué miembros de los elementos del controlador cliente del anillo de red pueden modificar y cuándo, en función del escenario de la trayectoria de datos, así como la información general que los controladores cliente deben tener en cuenta para estas estructuras.
Importante
Los controladores de cliente deben cumplir estas instrucciones durante todas las fases de desarrollo. Si un controlador cliente no cumple estas instrucciones mientras se prueba con el comprobador de controladores, el comprobador de controladores notifica una infracción y desencadena una comprobación de errores en el dispositivo en prueba.
NET_RING
Cuando se inicia la cola de paquetes primarios del NET_RING, todos los índices del anillo se inicializan en 0.
En la tabla siguiente se describen los miembros de la red que los controladores de clientes pueden modificar.
| Campo | Se permite modificar el controlador de cliente |
|---|---|
| OSReserved1 | No |
| ElementStride | No |
| NúmeroDeElementos | No |
| ElementIndexMask | No |
| ÍndiceFinal | No |
| OSReserved0 | No |
| OSReserved2 | No |
| BeginIndex | Sí (obligatorio) |
| NextIndex | Sí (opcional) Nota: El marco nunca lee NextIndex. |
| Scratch | Sí (opcional) Nota: El marco nunca lee Scratch. |
| Memoria intermedia | No |
Los controladores de cliente no deben modificar ningún miembro de solo lectura de esta estructura, ni tampoco deben incrementar BeginIndex más allá de EndIndex durante una llamada a EvtPacketQueueAdvance.
Para obtener más información sobre la propiedad del índice en anillos netos, vea Introducción a los anillos netos.
NET_PACKET
Los campos de un NET_PACKET son sensibles a los distintos contextos en los que funciona la ruta de acceso de datos. Si se establece el campo Omitir del paquete, y si el controlador está recibiendo (Rx) o transmitiendo (Tx) el paquete, el conjunto de reglas que se aplica al paquete cambia.
En la tabla siguiente se proporcionan instrucciones para los controladores en cada escenario.
| Rx o Tx | El campo ignorar es configurado por... | Notas |
|---|---|---|
| Rx | Controlador de cliente |
|
| Tx | NetAdapterCx |
|
Diseño de Paquete NET
Durante las operaciones rx, el campo Diseño del NET_PACKET está sujeto a las siguientes reglas:
- El controlador cliente debe inicializar todos los campos excepto Reserved0 .
- Si Layer2Type está establecido en NetPacketLayer2TypeEthernet, Layer2HeaderLength debe ser 14 o superior.
- Si Layer2Type está establecido en NetPacketLayer2TypeNull, Layer2HeaderLength debe establecerse en 0.
- Si Layer3Type es un tipo IPv4, Layer3HeaderLength debe ser 20 o superior.
- Si Layer3Type es un tipo IPv6, Layer3HeaderLength debe ser 40 o superior.
- Si Layer4Type está establecido en Tcp, Layer4HeaderLength debe ser 40 o superior.
- Si Layer4Type está establecido en Udp, Layer4HeaderLength debe ser 8 o superior.
- Los campos de tipo de capa deben estar dentro del intervalo de enumeración adecuado.
El diseño no se usa durante tx.
Fragmento de la Red
NET_FRAGMENT reglas de campo dependen de si el controlador está recibiendo o transmitiendo, y de si los búferes de fragmentos están conectados a los paquetes por el controlador o por el marco.
| Rx o Tx | Notas |
|---|---|
| Rx |
|
| Tx |
|