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

O NDIS chama a função MiniportHaltEx de um miniport driver para liberar recursos quando um adaptador de miniporto é removido e parar o hardware. Essa função coloca o miniporto no estado parado, onde nenhum outro retorno de chamada pode ocorrer (incluindo MiniportShutdownEx). Para obter mais informações sobre os estados do driver de miniport, consulte Os Estados e Operações do Adaptador de Miniport.

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

Sintaxe

MINIPORT_HALT MiniportHalt;

void MiniportHalt(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_HALT_ACTION HaltAction
)
{...}

Parâmetros

[in] MiniportAdapterContext

Um identificador para uma área de contexto que o driver de miniporto alocou em sua função MiniportInitializeEx . O driver de miniporto usa essa área de contexto para manter informações de estado para um adaptador de miniport.

[in] HaltAction

O motivo para interromper o adaptador de miniport. Pode ser um dos seguintes valores:

NdisHaltDeviceDisabled

O NDIS está interrompendo o adaptador de miniporto em resposta a uma mensagem de remoção de Plug and Play (PnP).

NdisHaltDeviceInstanceDeInitialized

O NDIS está interrompendo o adaptador de miniporto em resposta a um driver intermediário chamando o Função NdisIMDeInitializeDeviceInstance .

NdisHaltDevicePoweredDown

O NDIS está interrompendo o adaptador de miniporto porque o sistema está indo para um estado de suspensão.

NdisHaltDeviceSurpriseRemoved

O adaptador de miniporto foi removido de surpresa e o hardware não está presente.

NdisHaltDeviceFailed

O adaptador de miniporto está sendo removido devido a uma falha de hardware. O motorista do miniporto chamado função NdisMRemoveMiniport ou um motorista de ônibus não ligou a NIC no currículo.

NdisHaltDeviceInitializationFailed

O NDIS não pôde inicializar o adaptador de miniporto por um motivo desconhecido depois que a função MiniportInitializeEx foi concluída com êxito.

NdisHaltDeviceStopped

O NDIS está interrompendo o adaptador de miniporto em resposta a uma mensagem de dispositivo de parada PnP.

Valor retornado

Nenhum

Comentários

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

O NDIS pode chamar MiniportHaltEx a qualquer momento depois que a função MiniportInitializeEx de um driver retornar com êxito. Se o driver controlar uma NIC física, MiniportHaltEx deverá interromper a NIC. Se um driver intermediário do NDIS chamar o Função NdisIMDeInitializeDeviceInstance , o NDIS chama a função MiniportHaltEx para o dispositivo virtual do driver.

MiniportHaltEx deve liberar todos os recursos que foram alocados no MiniportInitializeEx para um dispositivo. MiniportHaltEx também libera outros recursos que o driver alocou em operações subsequentes para esse dispositivo. O driver deve chamar as recíprocas das funções NdisXxx com as quais originalmente alocava os recursos. Como regra geral, uma função MiniportHaltEx deve chamar as funções NdisXxx recíprocas em ordem inversa para as chamadas feitas pelo driver do MiniportInitializeEx.

Se uma NIC gerar interrupções, a função MiniportHaltEx de um miniport driver poderá ser preempida pela função MiniportInterrupt do driver até que o MiniportHaltEx chame para oA função NdisMDeregisterInterruptEx retorna. Essa função MiniportHaltEx de um driver deve desabilitar interrupções e chamar NdisMDeregisterInterruptEx assim que possível. Observe que um driver pode continuar recebendo interrupções até NdisMDeregisterInterruptEx retorna. NdisMDeregisterInterruptEx não retorna até que o driver conclua todos os DPCs agendados (consulte a função MiniportInterruptDPC para obter mais informações).

Se o driver tiver uma função NetTimerCallback associada a um objeto de temporizador que pode estar na fila do temporizador do sistema, MiniportHaltEx deverá chamar a função NdisCancelTimerObject . Se NdisCancelTimerObject falhar, o temporizador já poderá ter sido acionado. Nesse caso, o driver deve aguardar a conclusão da função de temporizador antes que o driver retorne do MiniportHaltEx.

O NDIS não chamará MiniportHaltEx se houver solicitações OID pendentes ou solicitações de envio. O NDIS não envia mais solicitações para o dispositivo afetado depois que o NDIS chama MiniportHaltEx.

Se o driver precisar aguardar a conclusão de qualquer operação, MiniportHaltEx poderá usar a função NdisWaitEvent ou a função NdisMSleep .

O NDIS chama MiniportHaltEx em IRQL = PASSIVE_LEVEL.

Exemplos

Para definir uma função MiniportHaltEx , primeiro você deve fornecer uma declaração de função que identifica 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 escrever drivers para o sistema operacional Windows.

Por exemplo, para definir uma função MiniportHaltEx chamada "MyHaltEx", use o tipo MINIPORT_HALT conforme mostrado neste exemplo de código:

MINIPORT_HALT MyHaltEx;

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

_Use_decl_annotations_
VOID
 MyHaltEx(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HALT_ACTION  HaltAction
    )
  {...}

O tipo de função MINIPORT_HALT é 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_HALT 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 para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotar Comportamento da Função.

Requisitos

   
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
Regras de conformidade DDI WlanAssociation, WlanConnectionRoaming, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Confira também

Estados do adaptador de um driver de miniport

Interrompendo um adaptador de miniport

Miniport Adapter States and Operations

Miniport Driver Reset and Halt Functions

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportReturnNetBufferLists

NdisCancelTimerObject

NdisIMDeInitializeDeviceInstance

NdisMDeregisterInterruptEx

NdisMRegisterMiniportDriver

NdisMRemoveMiniport

NdisMSleep

NdisWaitEvent

NetTimerCallback