Partilhar via


Palavras-chave de enumeração

O NDIS 6.0 e versões posteriores do NDIS fornecem palavras-chave de enumeração padronizadas para drivers de miniporte 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 um 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 compatíveis com um dispositivo. 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 ser pelo menos 1.000 Mbps (1 Gbps) e superiores. Aqui estão alguns exemplos para especificar a velocidade diretamente:

Valor de SpeedDuplex Velocidade resultante
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 Atualmente, os dispositivos Ethernet dão suporte ao controle de fluxo e os drivers Windows 8 in-box para LAN têm o controle de fluxo habilitado por padrão. Quando um depurador de kernel é anexado a um desses adaptadores de LAN, a NIC começará a enviar quadros de pausa do controle de fluxo por push 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, em Windows 8 e posteriores, 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 estiver habilitada e o miniporto chamar NdisReadConfiguration e passar "*FlowControl" para o parâmetro Keyword , 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 o comportamento configurado. Ele pode ser encontrado na seguinte chave do Registro:

HKEY_LOCAL_MACHINE\Sistema\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). Esse palavra-chave não indica se o dispositivo habilitou ou desabilitou a prioridade de pacote ou marcas VLAN. Em vez disso, ele descreve o seguinte:

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

O driver de miniporte deve remover o cabeçalho 802.1Q de todos os pacotes de recebimento, independentemente da configuração *PriorityVLANTag . Se o cabeçalho 802.1Q for deixado em um pacote, outros drivers talvez não consigam analisar o pacote corretamente.

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

Caso contrário, se o sinalizador Rx estiver desabilitado, o driver de miniporte 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 miniporte 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 não 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 miniporte não deve respeitar as informações do 802.1Q no OOB (e, portanto, não inserir nenhuma marca).
  • O filtro de miniporte não deve anunciar MacOptions apropriados em NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.

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

*InterruptModeration
Um valor que descreve se o dispositivo habilitou ou desabilitou a moderação de interrupçã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 moderação de interrupção, consulte Moderação de interrupção.

*RSS
Um valor que descreve se o dispositivo está habilitado ou desabilitado recebe o RSS (dimensionamento lateral). Para obter mais informações sobre o RSS, consulte Recebimento de dimensionamento lateral.

*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 cabeçalho-dados, consulte Divisão de cabeçalho-dados.

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 do palavra-chave que você deve especificar no arquivo INF e que aparece no Registro.

Paramdesc
O texto de exibição associado a SubkeyName.

Valor
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 para o 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 um palavra-chave, pesquise o palavra-chave na documentação do WDK.

SubkeyName Paramdesc Valor EnumDesc
*SpeedDuplex Velocidade & Duplex 0 (padrão) Negociação Automática
1 10 Mbps Meio Duplex
2 Duplex completo de 10 Mbps
3 100 Mbps Half Duplex
4 Duplex completo de 100 Mbps
5 1,0 Gbps Half 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 Controle de fluxo 0 (padrão de servidor) Tx & Rx Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (Padrão do cliente) Rx & Tx Habilitado
4 Negociação Automática
*PriorityVLANTag Prioridade do pacote & VLAN 0 Prioridade do pacote & VLAN desabilitada
1 Prioridade de pacote habilitada
2 VLAN Habilitada
3 (Padrão) Prioridade do pacote & VLAN Habilitada
*InterruptModeration Moderação de interrupção 0 Desabilitado
1 (Padrão) habilitado
*RSS Receive Side Scaling 0 Desabilitado
1 (Padrão) habilitado
*HeaderDataSplit Divisão de dados de cabeçalho 0 (padrão) Desabilitado
1 habilitado
*TCPConnectionOffloadIPv4 Descarregamento de conexão TCP (IPv4) 0 Desabilitado
1 (Padrão) habilitado
*TCPConnectionOffloadIPv6 Descarregamento de conexão TCP (IPv6) 0 Desabilitado
1 (Padrão) habilitado
*IPChecksumOffloadIPv4 Descarregamento de soma de verificação IPv4 0 Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (Padrão) Rx & Tx Habilitado
*TCPChecksumOffloadIPv4 Descarregamento de soma de verificação TCP (IPv4) 0 Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (Padrão) Rx & Tx Habilitado
*TCPChecksumOffloadIPv6 Descarregamento de soma de verificação TCP (IPv6) 0 Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (Padrão) Rx & Tx Habilitado
*UDPChecksumOffloadIPv4 Descarregamento de soma de verificação UDP (IPv4) 0 Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (Padrão) Rx & Tx Habilitado
*UDPChecksumOffloadIPv6 Descarregamento de soma de verificação UDP (IPv6) 0 Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (Padrão) Rx & Tx Habilitado
*LsoV1IPv4 Grande descarregamento de envio versão 1 (IPv4) 0 Desabilitado
1 (Padrão) habilitado
*LsoV2IPv4 Grande descarregamento de envio versão 2 (IPv4) 0 Desabilitado
1 (Padrão) habilitado
*LsoV2IPv6 Grande envio de descarregamento versão 2 (IPv6) 0 Desabilitado
1 (Padrão) habilitado
*IPsecOffloadV1IPv4 IPsec Offload Versão 1 (IPv4) 0 Desabilitado
1 Cabeçalho de Autenticação Habilitado
2 ESP Habilitado
3 (Padrão) Cabeçalho de Autenticação & ESP Habilitado
*IPsecOffloadV2 Descarregamento IPsec 0 Desabilitado
1 Cabeçalho de Autenticação Habilitado
2 ESP Habilitado
3 (Padrão) Cabeçalho de Autenticação & ESP Habilitado
*IPsecOffloadV2IPv4 Descarregamento IPsec (somente IPv4) 0 Desabilitado
1 Cabeçalho de Autenticação Habilitado
2 ESP Habilitado
3 (Padrão) Cabeçalho de Autenticação & ESP Habilitado
*TCPUDPChecksumOffloadIPv4 Descarregamento de soma de verificação TCP/UDP (IPv4) 0 Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (Padrão) Tx e Rx Habilitados
*TCPUDPChecksumOffloadIPv6 Descarregamento de soma de verificação TCP/UDP (IPv6) 0 Desabilitado
1 Tx Habilitado
2 Rx Habilitado
3 (padrão) Tx e Rx habilitados