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.
Um driver de miniporta NDIS deve fornecer uma função MiniportHaltEx para NdisMRegisterMiniportDriver.
MiniportHaltEx deve desfazer tudo o que MiniportInitializeEx fez. Por exemplo, o driver de miniporta NDIS pode:
Portos livres. (Para obter mais informações, consulte Liberando uma porta NDIS.)
Libere todos os recursos de hardware que MiniportInitializeEx reivindicou.
Libere os recursos de interrupção chamando NdisMDeregisterInterruptEx.
Liberte qualquer memória alocada pelo MiniportInitializeEx .
Pare a NIC, a menos que a função MiniportShutdownEx já tenha restaurado a NIC ao seu estado inicial.
O diagrama a seguir ilustra como descarregar um driver de miniport.
MiniportHaltEx deve concluir as operações necessárias para descarregar o driver antes de retornar. Se o driver de miniporta tiver alguma indicação de recebimento pendente (ou seja, dados de rede recebidos que ele indicou até o NDIS, mas que o NDIS ainda não retornou), o MiniportHaltEx não deve retornar até que esses dados sejam retornados para a função MiniportReturnNetBufferLists do driver de miniporta.
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 atual de chamadas depende de ações anteriores do driver de miniporta. O driver de miniporta pode fazer essas mesmas chamadas em MiniportInitializeEx se não puder inicializar com êxito o adaptador de rede devido a problemas de hardware ou porque não pode adquirir um recurso de que precisa. Nesse caso, MiniportInitializeEx deve descarregar o driver desfazendo suas ações anteriores. Caso contrário, MiniportHaltEx desfará as ações de MiniportInitializeEx.
A lista a seguir descreve as chamadas necessárias para reverter determinadas ações que o driver de miniporta pode tomar:
Se o driver de miniporta registrou uma interrupção, ele deve chamar NdisMDeregisterInterruptEx.
Se o driver de miniporta configurar um temporizador ou temporizadores, ele deve chamar NdisCancelTimerObject para cada temporizador que criou. Se uma chamada para NdisCancelTimerObject falhar, o temporizador pode já ter sido acionado. Nesse caso, o driver de miniporta deve aguardar a conclusão do manipulador de temporizador antes de retornar do MiniportHaltEx.
Se o driver de miniporta alocou qualquer memória com NdisAllocateMemoryWithTagPriority, ele deve chamar NdisFreeMemory para liberar essa memória.
Se o driver de miniporta alocou qualquer memória com NdisMAllocateSharedMemory ou NdisMAllocateSharedMemoryAsyncEx, ele deve chamar NdisMFreeSharedMemory para liberar essa memória.
Se o driver de miniporta tiver alocado e inicializado o armazenamento para um pool de descritores de pacotes com NdisAllocateNetBufferPool, deve chamar NdisFreeNetBufferPool para liberar esse armazenamento.
Se o driver da miniporta alocou ou reservou quaisquer recursos de hardware, eles devem ser retornados. Por exemplo, se o driver de miniporta mapeou um intervalo de portas de E/S em uma NIC, ele deve liberar as portas chamando NdisMDeregisterIoPortRange.
Tópicos relacionados
Estados de Adaptador de um Miniport Driver
Desativando um adaptador Miniport