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.
Todos os drivers NDIS 6.0 e posteriores são desserializados.
Um driver de miniporta NDIS desserializado serializa a operação de suas próprias funções MiniportXxx e gere internamente as filas de todas as solicitações de envio, em vez de depender do NDIS para realizar estas operações. Como resultado, um driver de miniporta desserializado pode alcançar um desempenho full-duplex significativamente melhor do que um driver de miniporta serializado.
O modelo de driver desserializado é o modelo padrão para drivers de miniporta NDIS. Os drivers de miniportas orientados à conexão, bem como os drivers de miniportas com interface inferior WDM, devem ser desserializados. Ao escrever um novo driver de miniporta NDIS, você deve escrever um driver desserializado. Se possível, você também deve portar drivers mais antigos para o NDIS 6.0 ou posterior. Para obter mais informações sobre a transferência de drivers, consulte:
- Adaptação de controladores NDIS 5.x para NDIS 6.0
- Migração de Drivers NDIS 6.x para NDIS 6.20
- Portabilidade de drivers NDIS 6.x para NDIS 6.30
Um driver de miniporta desserializado deve atender aos seguintes requisitos quando faz interface com NDIS:
O driver de miniporta desserializado deve identificar-se como tal ao NDIS durante a inicialização.
Um driver de miniporta desserializado deve concluir todas as solicitações de envio de forma assíncrona. Para concluir uma solicitação de envio, os drivers de miniporta sem conexão NDIS 6.0 e posteriores chamam a função NdisMSendNetBufferListsComplete. Drivers de miniporta orientados por conexão NDIS 6.0 e posteriores chamam a função NdisMCoSendNetBufferListsComplete.
Um driver de miniporta desserializado que suporta NDIS 6.0 ou posterior define o membro Status da estrutura NET_BUFFER_LIST que será passado para NdisMSendNetBufferListsComplete.
Se um driver de miniporta desserializado não puder concluir imediatamente as solicitações de envio, ele não poderá retornar as solicitações ao NDIS para reenfileiramento. Em vez disso, o driver de miniporta deve enfileirar solicitações de envio internamente até que haja recursos suficientes disponíveis para transmitir os dados.
Um driver de miniporta desserializado não deve examinar as estruturas que passa para o NDIS durante as indicações de recebimento, até que o NDIS as devolva. O NDIS retorna estruturas NET_BUFFER_LIST para a função MiniportReturnNetBufferLists de um driver de miniporta.
Um driver de miniporta desserializado deve atender aos seguintes requisitos internos do driver:
Um driver de miniporta desserializado deve proteger suas filas de buffer de rede com bloqueios de rotação . Um driver de miniporta desserializado também deve proteger seu estado compartilhado do acesso simultâneo por suas próprias funções MiniportXxx.
As funções de MiniportXxx de um driver de miniporta desserializado podem ser executadas em IRQL <= DISPATCH_LEVEL. Consequentemente, o gravador do driver não pode assumir que funções de MiniportXxx serão chamadas na sequência em que processam solicitações. Uma função MiniportXxx pode preemptar outra função MiniportXxx que está a ser executada em um IRQL mais baixo.
Um driver de miniporta desserializado é responsável pela gestão da fila de buffers de rede. Quando o driver de miniporta enfrenta um problema de recurso, ele não pode retornar solicitações de envio para o NDIS para reagendamento. Em vez disso, o driver de miniporta deve enfileirar internamente todas as solicitações de envio até que recursos suficientes estejam disponíveis para enviar os dados.
Um driver de miniporta desserializado deve concluir as solicitações de envio na ordem determinada pelo protocolo.
Para obter mais informações sobre os requisitos de envio e recebimento para drivers NDIS, consulte Operações de envio e recebimento.
Observe que um driver de miniporta desserializado geralmente conclui as solicitações de envio na ordem determinada pelo protocolo. No entanto, um driver de miniporta que suporta prioridade de pacote (por exemplo, IEEE 802.1p) pode reordenar solicitações de envio com base em informações de prioridade.