Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um driver de miniporto NDIS deve fornecer uma função MiniportHaltEx para NdisMRegisterMiniportDriver.
MiniportHaltEx deve desfazer tudo o que MiniportInitializeEx fez. Por exemplo, o driver miniport NDIS pode:
Portas gratuitas. (Para obter mais informações, consulte Como liberar uma porta NDIS.)
Libere todos os recursos de hardware que MiniportInitializeEx reivindicou.
Libere recursos de interrupção chamando NdisMDeregisterInterruptEx.
Libere qualquer memória alocada por MiniportInitializeEx .
Interrompa a NIC, a menos que a função MiniportShutdownEx já tenha restaurado a NIC para seu estado inicial.
O diagrama a seguir ilustra o descarregamento de um driver miniport.
MiniportHaltEx deve concluir as operações necessárias para descarregar o driver antes de retornar. Se o driver de miniporto tiver qualquer indicação de recebimento pendente (ou seja, dados de rede recebidos que ele indicou até NDIS, mas que o NDIS ainda não retornou), MiniportHaltEx não deverá retornar até que esses dados sejam retornados para a função MiniportReturnNetBufferLists do driver de miniport.
A figura anterior mostra um conjunto de chamadas que podem ser feitas por uma função MiniportHaltEx . Essas chamadas são apenas um subconjunto das chamadas que podem ser feitas. O conjunto real de chamadas depende de ações anteriores do driver de miniporto. O driver de miniporto pode fazer essas mesmas chamadas no MiniportInitializeEx se não conseguir inicializar com êxito o adaptador de rede devido a problemas de hardware ou porque ele não pode adquirir um recurso necessário. Nesse caso, MiniportInitializeEx deve descarregar o driver desfazendo suas ações anteriores. Caso contrário, MiniportHaltEx desfazerá as ações de MiniportInitializeEx.
A lista a seguir descreve as chamadas necessárias para reverter determinadas ações que o driver de miniporto pode executar:
Se o driver de miniporto registrou uma interrupção, ele deve chamar NdisMDeregisterInterruptEx.
Se o driver de miniporto configurar um ou mais temporizadores, ele deve chamar NdisCancelTimerObject para cada temporizador que criar. Se uma chamada para NdisCancelTimerObject falhar, o temporizador poderá já ter sido disparado. Nesse caso, o driver de miniporto deve esperar que o manipulador de temporizador conclua antes de retornar do MiniportHaltEx.
Se o driver de miniporto alocou alguma memória com NdisAllocateMemoryWithTagPriority, ele deverá chamar NdisFreeMemory para liberar essa memória.
Se o driver de miniporto alocar qualquer memória com NdisMAllocateSharedMemory ou NdisMAllocateSharedMemoryAsyncEx, ele deverá chamar NdisMFreeSharedMemory para liberar essa memória.
Se o driver de miniporto alocou e inicializou o armazenamento para um pool de descritores de pacotes com NdisAllocateNetBufferPool, ele deverá chamar NdisFreeNetBufferPool para liberar esse armazenamento.
Se o driver de miniporto alocar ou reservar quaisquer recursos de hardware, eles deverão ser retornados. Por exemplo, se o driver de miniporto mapeou um intervalo de portas I/O em uma NIC, ele deve liberar as portas chamando a função NdisMDeregisterIoPortRange.
Tópicos relacionados
estados do adaptador de um de driver de miniporto
Parando um adaptador de miniporto