Adicionando e excluindo descarregamentos de protocolo de baixa energia
Para adicionar um descarregamento de protocolo de baixa potência, os drivers de protocolo NDIS emitem uma solicitação de conjunto OID de OID_PM_ADD_PROTOCOL_OFFLOAD. O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_PM_PROTOCOL_OFFLOAD .
Nota Se um pacote de entrada corresponder a um protocolo descarregado e a um padrão (por exemplo, devido a um erro de configuração), o adaptador de rede deverá responder ao pacote e ativar o computador.
A estrutura NDIS_PM_PROTOCOL_OFFLOAD inclui as seguintes informações:
Membro | Descrição | ||||||||
---|---|---|---|---|---|---|---|---|---|
Prioridade |
Contém a prioridade do descarregamento de protocolo. Se um driver de sobreposição adicionar um descarregamento de protocolo de prioridade mais alta quando não houver recursos disponíveis para mais descarregamentos de protocolo, o NDIS poderá remover um descarregamento de protocolo de prioridade mais baixa para liberar recursos. Os drivers de miniporta devem ignorar esse membro. Os drivers de protocolo podem fornecer qualquer valor dentro do intervalo predefinido de NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST a NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST. |
||||||||
ProtocolOffloadType |
Contém um valor NDIS_PM_PROTOCOL_OFFLOAD_TYPE que especifica o tipo de descarregamento de protocolo. |
||||||||
Friendlyname |
Contém uma estrutura NDIS_PM_COUNTED_STRING que contém a descrição legível pelo usuário do descarregamento de protocolo de baixa energia. |
||||||||
ProtocolOffloadId |
Contém um valor fornecido pelo NDIS que identifica o protocolo descarregado. Antes que o NDIS envie a solicitação OID de OID_PM_ADD_PROTOCOL_OFFLOAD para os drivers NDIS subjacentes ou conclua a solicitação para o driver subjacente, o NDIS define ProtocolOffloadId como um valor exclusivo entre os descarregamentos de protocolo em um adaptador de rede. |
||||||||
NextProtocolOffloadOffset |
Contém o deslocamento, o início da solicitação OID InformationBuffer, para a próxima estrutura NDIS_PM_PROTOCOL_OFFLOAD em uma lista para o OID do OID_PM_PROTOCOL_OFFLOAD_LIST . Para obter mais informações sobre OID_PM_PROTOCOL_OFFLOAD_LIST, consulte Obtendo as configurações de parâmetro atuais de descarregamentos de protocolo de baixa energia. |
||||||||
ProtocolOffloadParameters |
Contém uma das estruturas IPv4ARPParameters, IPv6NSParameters ou Dot11RSNRekeyParameters em uma união.
|
O NDIS atribui um identificador exclusivo para um adaptador de rede a cada protocolo descarregado. O identificador de descarregamento de protocolo é um valor exclusivo para cada um dos protocolos descarregados em um adaptador de rede. No entanto, o identificador de descarregamento de protocolo não é globalmente exclusivo em todos os adaptadores de rede. O NDIS passa esse identificador para o driver de miniporta subjacente quando o NDIS envia o OID_PM_ADD_PROTOCOL_OFFLOAD solicitação OID para o driver de miniporto. Se o descarregamento do protocolo for bem-sucedido, o NDIS retornará o identificador para o driver subjacente que descarregou o protocolo. O driver de sobreposição usa o identificador para remover um protocolo descarregado anteriormente. O identificador de descarregamento de protocolo também é usado em status indicações para os drivers de camada superior quando um protocolo descarregado é removido de um adaptador de rede.
Os drivers de protocolo devem remover todos os protocolos descarregados de um adaptador de rede antes de fechar a associação para esse adaptador de rede. Para remover um descarregamento de protocolo de baixa potência, um driver de protocolo envia uma solicitação de conjunto de OID de OID_PM_REMOVE_PROTOCOL_OFFLOAD. O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para um identificador de descarregamento de protocolo.
O NDIS permite que vários drivers de protocolo NDIS adicionem descarregamentos de protocolo ao mesmo adaptador de rede. Para garantir que o conjunto certo de protocolos tenha sido descarregado para um adaptador de rede quando o número de protocolos descarregados solicitados for maior do que o que um adaptador de rede pode dar suporte, os drivers de protocolo atribuem uma prioridade a cada protocolo descarregado. Quando o NDIS não pode descarregar um novo protocolo de alta prioridade porque o adaptador de rede está sem recursos, o NDIS exclui um dos protocolos descarregados de prioridade mais baixa (se houver) e tenta descarregar o protocolo de alta prioridade novamente.
Nota Um driver de miniporta deve falhar em uma solicitação de adição de descarregamento de protocolo de baixa potência e retornar o código STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL status para permitir que o NDIS repriorize os descarregamentos de protocolo.
Se, como resultado do descarregamento de um protocolo de alta prioridade, um dos protocolos descarregados de prioridade mais baixa for excluído, o NDIS enviará um NDIS_STATUS_PM_OFFLOAD_REJECTED status indicação para notificar o driver sobressociente que define o descarregamento de protocolo excluído. O membro StatusBuffer da estrutura NDIS_STATUS_INDICATION contém um identificador de descarregamento de protocolo do descarregamento de protocolo rejeitado. O NDIS forneceu o identificador de descarregamento de protocolo no membro ProtocolOffloadId da estrutura NDIS_PM_PROTOCOL_OFFLOAD .