Compartilhar via


MINIPORT_UNLOAD função de retorno de chamada (ndis.h)

O NDIS chama a função MiniportDriverUnload de um driver de miniport para solicitar que o driver libere recursos antes que o sistema conclua uma operação de descarregamento do driver.

Nota Você deve declarar a função usando o tipo MINIPORT_UNLOAD . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

MINIPORT_UNLOAD MiniportUnload;

void MiniportUnload(
  [in] PDRIVER_OBJECT DriverObject
)
{...}

Parâmetros

[in] DriverObject

Um ponteiro para uma estrutura DRIVER_OBJECT que é o objeto de driver do driver.

Retornar valor

Nenhum

Comentários

Um driver especifica o ponto de entrada MiniportDriverUnload quando ele chama o Função NdisMRegisterMiniportDriver .

O objeto driver associado a um driver de miniporto NDIS especifica uma rotina de descarregamento . O sistema operacional chama a rotina Descarregue quando todos os dispositivos que os serviços de driver de miniporto foram removidos. O NDIS fornece a rotina de descarregamento para drivers NDIS. O NDIS chama a função MiniportDriverUnload de um driver de miniport da rotina Descarregar .

A funcionalidade da rotina Descarregue é específica do driver. Como regra geral, MiniportDriverUnload deve desfazer as operações que foram executadas na rotina driverEntry do driver.

Um driver de miniporte chama o Função NdisMDeregisterMiniportDriver do MiniportDriverUnload.

Além de NdisMDeregisterMiniportDriver, um driver intermediário também chama o Função NdisDeregisterProtocolDriver para desregistrar a interface de protocolo do driver. O MiniportDriverUnload também deve executar todas as operações de limpeza necessárias, como desalocar todos os recursos de interface do driver de protocolo.

Se um driver de miniporte gerenciar mais de uma instância de dispositivo, como um driver de balanceamento de carga, o NDIS não chamará MiniportDriverUnload até que o NDIS chame a função MiniportHaltEx uma vez para cada instância do dispositivo.

O NDIS chama MiniportDriverUnload em IRQL = PASSIVE_LEVEL.

Exemplos

Para definir uma função MiniportDriverUnload , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função MiniportDriverUnload chamada "MyDriverUnload", use o tipo MINIPORT_UNLOAD conforme mostrado neste exemplo de código:

MINIPORT_UNLOAD MyDriverUnload;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
VOID
 MyDriverUnload(
    PDRIVER_OBJECT  DriverObject
    )
  {...}

O tipo de função MINIPORT_UNLOAD é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função MINIPORT_UNLOAD no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL PASSIVE_LEVEL

Confira também

DRIVER_OBJECT

MiniportHaltEx

NdisDeregisterProtocolDriver

NdisMDeregisterMiniportDriver

NdisMRegisterMiniportDriver

Descarregar