Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Siga as diretrizes neste tópico para gerenciar suas estruturas de NET_RING e seus elementos durante a transferência de dados de rede. As regras neste tópico descrevem quais membros dos drivers clientes de elementos do anel de rede podem modificar e quando, dependendo do cenário de caminho de dados, assim como informações gerais que os drivers clientes devem ter em mente para essas estruturas.
Importante
Os drivers de cliente devem seguir essas direções durante todas as fases de desenvolvimento. Se um driver cliente não aderir a essas direções durante o teste com o Verificador de Driver, o Verificador de Driver relatará uma violação e disparará uma verificação de bugs no dispositivo em teste.
NET_RING
Quando a fila de pacotes pai do NET_RING é iniciada, todos os índices no anel são inicializados como 0.
A tabela a seguir descreve quais membros do anel de rede que os drivers cliente podem modificar.
| Campo | O driver cliente tem permissão para modificar |
|---|---|
| OSReserved1 | Não |
| ElementStride | Não |
| NúmeroDeElementos | Não |
| ElementIndexMask | Não |
| ÍndiceFinal | Não |
| OSReserved0 | Não |
| OSReserved2 | Não |
| BeginIndex | Sim (obrigatório) |
| NextIndex | Sim (opcional) Observação: a estrutura nunca lê NextIndex. |
| Scratch | Sim (opcional) Observação: a estrutura nunca lê Scratch. |
| Buffer | Não |
Os drivers cliente não devem modificar nenhum membro de somente leitura dessa estrutura, nem devem incrementar BeginIndex além de EndIndex durante uma chamada para EvtPacketQueueAdvance.
Para obter mais informações sobre a propriedade do índice em anéis de rede, consulte Introdução aos anéis de rede.
pacote de rede
Os campos em uma NET_PACKET são sensíveis aos diferentes contextos nos quais o caminho de dados opera. Se o campo Ignorar do pacote está definido e se o driver está recebendo (Rx) ou transmitindo (Tx) o pacote altera o conjunto de regras que é aplicado ao pacote.
A tabela a seguir fornece instruções para drivers em cada cenário.
| Rx ou Tx | O campo de ignorar é definido por... | Anotações |
|---|---|---|
| Rx | Driver do cliente |
|
| Tx | NetAdapterCx |
|
NET_PACKET_LAYOUT
Durante as operações do Rx, o campo Layout do NET_PACKET está sujeito às seguintes regras:
- Todos os campos, exceto Reservado0 , devem ser inicializados pelo driver cliente.
- Se Layer2Type estiver definido como NetPacketLayer2TypeEthernet, Layer2HeaderLength deverá ter 14 ou mais.
- Se Layer2Type estiver definido como NetPacketLayer2TypeNull, Layer2HeaderLength deverá ser definido como 0.
- Se Layer3Type for um tipo IPv4, Layer3HeaderLength deverá ter 20 ou mais.
- Se Layer3Type for um tipo IPv6, Layer3HeaderLength deverá ter 40 ou mais.
- Se Layer4Type estiver definido como Tcp, Layer4HeaderLength deverá ter 40 ou mais.
- Se Layer4Type estiver definido como Udp, Layer4HeaderLength deverá ter 8 ou mais.
- Os campos de tipo de camada devem estar dentro do intervalo de enumeração apropriado.
O layout não é usado durante o Tx.
NET_FRAGMENT
As regras de campo de NET_FRAGMENT dependem de se o driver está recebendo ou transmitindo, e de se os buffers de fragmento são anexados aos pacotes pelo driver ou pelo framework.
| Rx ou Tx | Anotações |
|---|---|
| Rx |
|
| Tx |
|