Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O NDIS 6.0 e versões posteriores do NDIS fornecem palavras-chave de enumeração padronizadas para drivers de miniporta de dispositivos de rede. As 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 gerais de enumeração são:
*SpeedDuplex
Configurações de velocidade e duplex suportadas por um dispositivo. O arquivo INF do dispositivo deve listar apenas as configurações que o dispositivo associado suporta. Ou seja, para um dispositivo Ethernet 10/100 que pode suportar apenas o modo full-duplex, as configurações para Gigabit ou velocidades mais altas ou half duplex não devem ser listadas no arquivo INF associado.
Os valores de velocidade que ainda não estão especificamente definidos 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) ou mais. 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 |
*Controlo de Fluxo
A capacidade do dispositivo de ativar ou desativar o controle de fluxo no caminho de envio ou recebimento.
Observação Atualmente, os dispositivos Ethernet suportam controle de fluxo, e os drivers de caixa de entrada do Windows 8 para LAN têm o controle de fluxo habilitado por padrão. Quando um depurador do kernel se conecta a um desses adaptadores LAN, a NIC começará a enviar quadros de pausa do controle de fluxo para a rede. A maioria dos comutadores de rede reagirá desativando temporariamente a rede de todos os outros computadores conectados ao mesmo hub. Este é um cenário de desenvolvimento comum, e a experiência do usuário final é indesejável e difícil de diagnosticar.
Observação 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 versões posteriores, o NDIS desativará 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 do kernel está ativada e a miniporta chama NdisReadConfiguration e passa "*FlowControl" para o parâmetro Keyword, o NDIS irá sobrescrever 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 sob a 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ê pode criar um valor com o nome AllowFlowControlUnderDebugger e o tipo REG_DWORD e defini-lo como 0x00000001.
*PrioridadeVLANTag
Um valor que indica se o dispositivo habilitou ou desabilitou a capacidade de inserir as tags 802.1Q para prioridade de pacotes e LANs virtuais (VLANs). Essa palavra-chave não indica se o dispositivo ativou ou desabilitou a prioridade de pacotes ou as tags VLAN. Em vez disso, descreve o seguinte:
- Se o dispositivo insere tags 802.1Q durante uma operação de envio
- Se as informações da tag 802.1Q estão disponíveis no NET_BUFFER_LIST informações fora de banda (OOB)
- Se o dispositivo copia tags 802.1Q para OOB durante as operações de recebimento
O driver de miniporta 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 podem não ser capazes de analisar o pacote corretamente.
Se o sinalizador Rx estiver ativado no caminho de recebimento, o driver de miniporta deverá copiar o cabeçalho 802.1Q removido para o OOB.
Caso contrário, se o sinalizador Rx estiver desativado, o driver de miniporta não deve copiar o cabeçalho 802.1Q removido para OOB.
Se o sinalizador Tx estiver habilitado no caminho de transmissão, o driver de miniporta 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 existirem dados diferentes de zero no OOB).
- Anuncie MacOptions apropriadas 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 desativado, então:
- O filtro de miniporta não deve honrar as informações 802.1Q no OOB (e, portanto, não inserir nenhuma tag).
- O filtro de miniporta não deve indicar os MacOptions apropriados em NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.
Observação Se o driver de miniporta suportar QoS (qualidade de serviço) NDIS, ele também deverá 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 Palavras-chave INF padronizadas para NDIS QoS.
*InterruptModeration
Um valor que descreve se o dispositivo ativou ou desativou a moderação de interrupção. Os algoritmos de moderação de interrupção dependem do dispositivo. O fabricante do dispositivo pode usar palavras-chave não padronizadas para suportar 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 ativado ou desativado recebe RSS (escala lateral). Para obter mais informações sobre RSS, consulte Escalonamento Lateral de Recepção.
*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
Observação Para dispositivos que suportam grande descarga de envio versão 1 (LSOv1) e LSOv2 sobre IPv4, somente a palavra-chave *LsoV2IPv4 deve ser usada no arquivo INF e nos valores de registo. 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 de 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:
Nome da subchave
O nome da 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.
Predefinido
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 uma palavra-chave, procure a palavra-chave na documentação do WDK.
| Nome da subchave | ParamDesc | Valor | EnumDesc |
|---|---|---|---|
| *SpeedDuplex | Velocidade & Duplex | 0 (Padrão) | Negociação Automática |
| 1 | 10 Mbps Semiduplex | ||
| 2 | Full Duplex de 10 Mbps | ||
| 3 | 100 Mbps Half Duplex | ||
| 4 | 100 Mbps em Full Duplex | ||
| 5 | 1,0 Gbps Half Duplex | ||
| 6 | Full Duplex de 1,0 Gbps | ||
| 7 | 10 Gbps Full Duplex | ||
| 8 | 20 Gbps Full Duplex | ||
| 9 | 40 Gbps Full Duplex | ||
| 10 | Full Duplex de 100 Gbps | ||
| *Controlo de Fluxo | Controlo de Caudal | 0 (padrão do servidor) | Tx & Rx desativado |
| 1 | Tx ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão do cliente) | Rx & Tx ativados | ||
| 4 | Negociação Automática | ||
| *PrioridadeVLANTag | Prioridade de pacote & VLAN | 0 | Prioridade de pacote & VLAN desabilitada |
| 1 | Prioridade de pacote ativada | ||
| 2 | VLAN ativada | ||
| 3 (Padrão) | Prioridade de pacote & VLAN ativada | ||
| *InterruptModeration | Gestão de Interrupções | 0 | Desabilitado |
| 1 (Padrão) | Ativado(a) | ||
| *RSS | Receber dimensionamento lateral | 0 | Desabilitado |
| 1 (Padrão) | Ativado(a) | ||
| *HeaderDataSplit | Divisão de dados de cabeçalho | 0 (Padrão) | Desabilitado |
| 1 | Ativado(a) | ||
| *TCPConnectionOffloadIPv4 | Descarregamento de Ligações TCP (IPv4) | 0 | Desabilitado |
| 1 (Padrão) | Ativado(a) | ||
| *TCPConnectionOffloadIPv6 | Descarga de Conexão TCP (IPv6) | 0 | Desabilitado |
| 1 (Padrão) | Ativado(a) | ||
| *IPChecksumOffloadIPv4 | Descarregamento da soma de verificação IPv4 | 0 | Desabilitado |
| 1 | Tx ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão) | Rx & Tx Ativado | ||
| *TCPChecksumOffloadIPv4 | Descarregamento de soma de verificação TCP (IPv4) | 0 | Desabilitado |
| 1 | Tx ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão) | Rx & Tx Ativado | ||
| *TCPChecksumOffloadIPv6 | Descarregamento de soma de verificação TCP (IPv6) | 0 | Desabilitado |
| 1 | Tx ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão) | Rx & Tx ativado | ||
| *UDPChecksumOffloadIPv4 | Descarregamento de soma de verificação UDP (IPv4) | 0 | Desabilitado |
| 1 | Tx Ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão) | Rx & Tx ativado | ||
| *UDPChecksumOffloadIPv6 | Descarregamento de soma de verificação UDP (IPv6) | 0 | Desabilitado |
| 1 | Tx Ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão) | Rx & Tx ativado | ||
| *LsoV1IPv4 | Descarregamento de Grande Envio Versão 1 (IPv4) | 0 | Desabilitado |
| 1 (Padrão) | Ativado(a) | ||
| *LsoV2IPv4 | Descarregamento de envio grande versão 2 (IPv4) | 0 | Desabilitado |
| 1 (Padrão) | Ativado(a) | ||
| *LsoV2IPv6 | Descarregamento de envio grande versão 2 (IPv6) | 0 | Desabilitado |
| 1 (Padrão) | Ativado(a) | ||
| *IPsecOffloadV1IPv4 | Descarregamento de IPsec Versão 1 (IPv4) | 0 | Desabilitado |
| 1 | Cabeçalho de autenticação ativado | ||
| 2 | ESP ativado | ||
| 3 (Padrão) | Cabeçalho de autenticação e ESP ativado | ||
| *IPsecOffloadV2 | Descarregamento de IPsec | 0 | Desabilitado |
| 1 | Cabeçalho de autenticação ativado | ||
| 2 | ESP ativado | ||
| 3 (Padrão) | Cabeçalho de autenticação & ESP ativado | ||
| *IPsecOffloadV2IPv4 | Descarregamento de IPsec (somente IPv4) | 0 | Desabilitado |
| 1 | Cabeçalho de autenticação ativado | ||
| 2 | ESP ativado | ||
| 3 (Padrão) | Cabeçalho de autenticação & ESP ativado | ||
| *TCPUDPChecksumOffloadIPv4 | Descarregamento da soma de verificação TCP/UDP (IPv4) | 0 | Desabilitado |
| 1 | Tx ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão) | Tx e Rx habilitados | ||
| *TCPUDPChecksumOffloadIPv6 | Descarregamento da soma de verificação TCP/UDP (IPv6) | 0 | Desabilitado |
| 1 | Tx ativado | ||
| 2 | Rx Ativado | ||
| 3 (Padrão) | Tx e Rx ativados |