Compartilhar via


Enumeration Keywords

O NDIS 6.0 e as versões posteriores do NDIS fornecem palavras-chave de enumeração padronizadas para drivers de miniportas de dispositivos de rede. Palavras-chave de enumeração são associadas a valores que aparecem como uma lista em um menu.

O exemplo a seguir mostra uma definição de arquivo INF para uma palavra-chave de enumeração.

HKR, Ndi\params\<SubkeyName>, ParamDesc, 0, "%<SubkeyName>%"
HKR, Ndi\params\<SubkeyName>, Type, 0, "enum"
HKR, Ndi\params\<SubkeyName>, Default, 0, "3"
HKR, Ndi\params\<SubkeyName>, Optional, 0, "0"
HKR, Ndi\params\<SubkeyName>\enum, "0", 0, "%Disabled%"
HKR, Ndi\params\<SubkeyName>\enum, "1", 0, "%Tx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "2", 0, "%Rx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "3", 0, "%Rx & Tx Enabled%"

As palavras-chave de enumeração geral são:

*SpeedDuplex
Configurações de velocidade e duplex que um dispositivo suporta. O arquivo INF do dispositivo deve listar apenas as configurações compatíveis com o dispositivo associado. Ou seja, para um dispositivo Ethernet 10/100 que pode dar suporte apenas ao modo full-duplex, as configurações para Gigabit ou velocidades mais altas ou metade duplex não devem ser listadas no arquivo INF associado.

Valores de velocidade que ainda não estão definidos especificamente com valores enumerados de 0 a 10 podem ser definidos como um número que é o valor diretamente em Mbps. Os valores diretos devem ter pelo menos 1.000 Mbps (1 Gbps) e superiores. Aqui estão alguns exemplos para especificar a velocidade diretamente:

SpeedDuplex value Resulting speed
1,000 1 Gbps
10,000 10 Gbps
25,000 25 Gbps
50,000 50 Gbps
100,000 100 Gbps

*FlowControl
A capacidade do dispositivo de habilitar ou desabilitar o controle de fluxo no caminho de envio ou recebimento.

Nota Os dispositivos Ethernet hoje dão suporte ao controle de fluxo e os drivers in-box do Windows 8 para LAN têm o controle de fluxo habilitado por padrão. Quando um depurador de kernel se conecta a um desses adaptadores de LAN, a placa de interface de rede (NIC) começará a transmitir quadros de pausa do controle de fluxo para a rede. A maioria dos comutadores de rede reagirá retirando temporariamente a rede para todos os outros computadores conectados ao mesmo hub. Esse é um cenário de desenvolvimento comum e a experiência do usuário final é indesejável e difícil de diagnosticar.

Nota Os padrões de cliente e servidor não são os mesmos; consulte a tabela de padrões abaixo.

Por esse motivo, no Windows 8 e posterior, o NDIS desabilitará o controle de fluxo automaticamente quando a depuração estiver habilitada no computador (por exemplo, digitando bcdedit /set debug on na linha de comando). Quando a depuração de kernel está habilitada e o miniport chama NdisReadConfiguration e passa "*FlowControl" para o parâmetro Palavra-chave, o NDIS substituirá o valor configurado e retornará zero.

Se você precisar habilitar o controle de fluxo durante a depuração, o NDIS fornecerá o valor do registro AllowFlowControlUnderDebugger para permitir que você faça isso. O valor do registro AllowFlowControlUnderDebugger impede que o NDIS desabilite o controle de fluxo e permite que as NICs mantenham seu comportamento configurado. Ele pode ser encontrado na seguinte chave do Registro:

\ HKEY_LOCAL_MACHINESistema\CurrentControlSet\Serviços\NDIS\Parâmetros

Defina esse valor do Registro como 0x00000001.

Se ele não existir, você poderá criar um valor com o nome AllowFlowControlUnderDebugger e o tipo REG_DWORD e defini-lo como 0x00000001.

*PriorityVLANTag
Um valor que indica se o dispositivo habilitou ou desabilitou a capacidade de inserir as marcas 802.1Q para prioridade de pacote e VLANs (LANs virtuais). Essa palavra-chave não indica se o dispositivo habilitou ou desabilitou a prioridade de pacote ou marcas VLAN. Em vez disso, descreve o seguinte:

  • Se o dispositivo insere marcas 802.1Q durante uma operação de envio
  • Se as informações da etiqueta 802.1Q estão disponíveis no NET_BUFFER_LIST informações OOB (fora de banda)
  • Se o dispositivo copia marcas 802.1Q para OOB durante operações de recebimento

O driver de miniporto deve remover o cabeçalho 802.1Q de todos os pacotes recebidos, independentemente da definição *PriorityVLANTag. Se o cabeçalho 802.1Q for deixado em um pacote, outros drivers poderão não ser capazes de analisar o pacote corretamente.

Se o sinalizador Rx estiver habilitado no caminho de recebimento, o driver de miniporto deverá copiar o cabeçalho 802.1Q removido para o OOB.

Caso contrário, se o sinalizador Rx estiver desabilitado, o driver de miniporto não deverá copiar o cabeçalho 802.1Q removido para o OOB.

Se o sinalizador Tx estiver habilitado no caminho de transmissão, o driver de miniporto deverá fazer o seguinte:

  • Insira o cabeçalho 802.1Q em cada pacote de saída e preencha-o com os dados do OOB (se houver dados diferentes de zero no OOB).
  • Anuncie MacOptions apropriados em NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES (NDIS_MAC_OPTION_8021P_PRIORITY e NDIS_MAC_OPTION_8021Q_VLAN).

Caso contrário, se o sinalizador Tx estiver desabilitado, então:

  • O filtro de miniporto não deve respeitar as informações de 802.1Q no OOB (e, portanto, não inserir nenhuma marca).
  • O filtro de miniporto não deve anunciar MacOptions apropriados em NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.

Nota Se o driver de miniporto oferecer suporte à qualidade de serviço (QoS) do NDIS, ele deverá também ler o valor da palavra-chave *QOS. Com base no valor da palavra-chave *QOS , os valores da palavra-chave *PriorityVLANTag são interpretados de forma diferente. Para obter mais informações, consulte As palavras-chave INF padronizadas para QoS do NDIS.

*InterruptModeration
Um valor que descreve se o dispositivo está habilitado ou desabilitado interrompe a moderação. Algoritmos de moderação de interrupção dependem do dispositivo. O fabricante do dispositivo pode usar palavras-chave não padronizadas para dar suporte a configurações algorítmicas. Para obter mais informações sobre a moderação de interrupção, consulte de moderação de interrupção.

*RSS
Um valor que descreve se o dispositivo habilitou ou desabilitou o dimensionamento de lado do receptor (RSS). Para obter mais informações sobre o RSS, consulte Receive Side Scaling.

*HeaderDataSplit
Um valor que descreve se o dispositivo habilitou ou desabilitou a divisão de dados de cabeçalho. Para obter mais informações sobre a divisão de dados de cabeçalho, consulte Header-Data Split.

As seguintes palavras-chave estão associadas aos serviços de descarregamento de conexão:

*TCPConnectionOffloadIPv4

*TCPConnectionOffloadIPv6

Para obter mais informações sobre as palavras-chave de descarregamento de conexão, consulte Usando valores do Registro para habilitar e desabilitar o descarregamento de conexão.

As seguintes palavras-chave estão associadas aos serviços de descarregamento de tarefas:

*IPChecksumOffloadIPv4

*TCPChecksumOffloadIPv4

*TCPChecksumOffloadIPv6

*UDPChecksumOffloadIPv4

*UDPChecksumOffloadIPv6

*LsoV1IPv4

*LsoV2IPv4

Nota Para dispositivos que dão suporte a LSOv1 (versão de descarregamento de envio grande) e LSOv2 por IPv4, somente a palavra-chave *LsoV2IPv4 deve ser usada nos valores de arquivo INF e registro. Se, por exemplo, a palavra-chave *LsoV2IPv4 aparecer no arquivo INF e a palavra-chave *LsoV1IPv4 aparecer no registro (ou vice-versa), a palavra-chave *LsoV2IPv4 sempre terá precedência.

*LsoV2IPv6

*IPsecOffloadV1IPv4

*IPsecOffloadV2

*IPsecOffloadV2IPv4

*TCPUDPChecksumOffloadIPv4

*TCPUDPChecksumOffloadIPv6

Para obter mais informações sobre as palavras-chave de descarregamento TCP/IP, consulte Usando valores do Registro para habilitar e desabilitar o descarregamento de tarefas.

As colunas na tabela no final deste tópico descrevem os seguintes atributos para palavras-chave de enumeração:

SubkeyName
O nome da palavra-chave que você deve especificar no arquivo INF e que aparece no registro.

ParamDesc
O texto de exibição associado ao SubkeyName.

Value
O valor inteiro de enumeração associado a cada opção na lista. Esse valor é armazenado em NDI\params\SubkeyName\Value.

EnumDesc
O texto de exibição associado a cada valor que aparece no menu.

Default
O valor padrão do menu.

A tabela a seguir lista todas as palavras-chave e descreve os valores que um driver deve usar para os atributos anteriores. Para obter mais informações sobre uma palavra-chave, pesquise a palavra-chave na documentação do WDK.

SubkeyName ParamDesc Value EnumDesc
*SpeedDuplex Velocidade & Duplex 0 (Default) Auto Negotiation
1 10 Mbps Half Duplex
2 Duplex completo de 10 Mbps
3 100 Mbps Half Duplex
4 Duplex completo de 100 Mbps
5 1 Gbps (Meio-Duplex)
6 Duplex completo de 1,0 Gbps
7 Duplex completo de 10 Gbps
8 Duplex completo de 20 Gbps
9 Duplex completo de 40 Gbps
10 Duplex completo de 100 Gbps
*FlowControl Flow Control 0 (Padrão do servidor) Tx & Rx Desativado
1 Tx Enabled
2 Rx Enabled
3 (Padrão do cliente) Rx &Tx Habilitado
4 Auto Negotiation
*PriorityVLANTag Prioridade de Pacote & VLAN 0 Prioridade do Pacote &VLAN Desabilitada
1 Prioridade de pacote habilitada
2 VLAN Enabled
3 (Default) Prioridade de Pacote &VLAN Habilitada
*InterruptModeration Interrupt Moderation 0 Disabled
1 (Default) Enabled
*RSS Escalonamento do Lado de Recepção 0 Disabled
1 (Default) Enabled
*HeaderDataSplit Divisão de dados de cabeçalho 0 (Default) Disabled
1 Enabled
*TCPConnectionOffloadIPv4 Descarregamento de conexão TCP (IPv4) 0 Disabled
1 (Default) Enabled
*TCPConnectionOffloadIPv6 Descarregamento de conexão TCP (IPv6) 0 Disabled
1 (Default) Enabled
*IPChecksumOffloadIPv4 Descarregamento de soma de verificação IPv4 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx &Tx Habilitado
*TCPChecksumOffloadIPv4 Descarregamento de soma de verificação TCP (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx &Tx Habilitado
*TCPChecksumOffloadIPv6 Descarregamento de soma de verificação TCP (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx &Tx Habilitado
*UDPChecksumOffloadIPv4 Descarregamento de soma de verificação UDP (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx &Tx Habilitado
*UDPChecksumOffloadIPv6 Descarregamento de soma de verificação UDP (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx &Tx Habilitado
*LsoV1IPv4 Descarregamento de envio grande versão 1 (IPv4) 0 Disabled
1 (Default) Enabled
*LsoV2IPv4 Descarregamento de Grande Envio Versão 2 (IPv4) 0 Disabled
1 (Default) Enabled
*LsoV2IPv6 Descarregamento de envio grande versão 2 (IPv6) 0 Disabled
1 (Default) Enabled
*IPsecOffloadV1IPv4 IPsec Offload Versão 1 (IPv4) 0 Disabled
1 Cabeçalho de Autenticação Habilitado
2 ESP Enabled
3 (Default) Cabeçalho de Autorização e ESP Ativado
*IPsecOffloadV2 IPsec Offload 0 Disabled
1 Cabeçalho de Autenticação Habilitado
2 ESP Enabled
3 (Default) Cabeçalho de Autorização e ESP Ativado
*IPsecOffloadV2IPv4 Descarregamento de IPsec (apenas IPv4) 0 Disabled
1 Cabeçalho de Autenticação Habilitado
2 ESP Enabled
3 (Default) Cabeçalho de Autorização e ESP Ativado
*TCPUDPChecksumOffloadIPv4 Descarregamento de soma de verificação TCP/UDP (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Tx e Rx Habilitados
*TCPUDPChecksumOffloadIPv6 Descarregamento de soma de verificação TCP/UDP (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Tx e Rx Habilitados