Compartilhar via


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

O NDIS chama a função MiniportHaltEx de um driver de miniport para liberar recursos quando um adaptador de miniporto é removido e para interromper o hardware. Essa função coloca o miniporto no estado Parado, em que nenhum outro retorno de chamada pode ocorrer (incluindo MiniportShutdownEx). Para obter mais informações sobre estados de driver de miniporta, consulte Miniport Adapter States and Operations.

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 miniporta usa essa área de contexto para manter informações de estado para um adaptador de miniporto.

[in] HaltAction

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

NdisHaltDeviceDisabled

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

NdisHaltDeviceInstanceDeInitialized

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

NdisHaltDevicePoweredDown

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

NdisHaltDeviceSurpriseRemoved

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

NdisHaltDeviceFailed

O adaptador de miniporta 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 miniporta em resposta a uma mensagem de dispositivo de parada PnP.

Retornar valor

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 em MiniportInitializeEx para um dispositivo. MiniportHaltEx também libera todos os 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 alocou 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 de MiniportInitializeEx.

Se uma NIC gerar interrupções, a função MiniportHaltEx de um driver de miniport pode ser preempcionada 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 termine 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 disparado. Nesse caso, o driver deve aguardar a conclusão da função de temporizador antes que o driver retorne de 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 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 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 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
Regras de conformidade da DDI WlanAssociation, WlanConnectionRoaming, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Confira também

Estados do adaptador de um driver miniport

Interrompendo um adaptador miniporta

Estados e operações do adaptador miniport

Funções De redefinição e interrupção do driver de miniport

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportReturnNetBufferLists

NdisCancelTimerObject

NdisIMDeInitializeDeviceInstance

NdisMDeregisterInterruptEx

NdisMRegisterMiniportDriver

NdisMRemoveMiniport

NdisMSleep

NdisWaitEvent

NetTimerCallback