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 |