Função NdisMNetPnPEvent (ndis.h)

Os drivers de miniporto NDIS (e drivers intermediários registrados como drivers de miniporto) chamam a função NdisMNetPnPEvent para originar um evento de Plug and Play de rede, um evento NDIS PnP ou um evento do Power Management ou propagá-lo para drivers sobrepostos.

Sintaxe

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

Parâmetros

[in] MiniportAdapterHandle

Um identificador NDIS fornecido pelo NDIS no parâmetro MiniportAdapterHandle da função MiniportInitializeEx . Esse identificador identifica o adaptador de miniporte afetado pelo evento. Se o chamador for um driver intermediário, esse será o identificador do miniporto virtual.

NetPnPEventNotification

Um ponteiro para um NET_PNP_EVENT_NOTIFICATION estrutura, que descreve o evento de Plug and Play de rede, o evento NDIS PnP ou o evento Power Management.

Importante

Se o campo VPortId de NetPnpEventNotification for definido como um valor diferente de NDIS_DEFAULT_VPORT_ID, o membro Flags deverá ser definido como NET_EVENT_FLAGS_VPORT_ID_VALID para vPortId entrar em vigor.

Retornar valor

NdisMNetPnPEvent pode retornar o seguinte:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
Os drivers overlying processaram com êxito o evento Plug and Play ou Power Management.
NDIS_STATUS_RESOURCES
Os drivers overlying não puderam obter os recursos necessários do sistema para atender ao evento indicado Plug and Play ou Power Management.
NDIS_STATUS_INVALID_PARAMETER
Falha no NDIS na chamada porque alguns dos parâmetros de entrada são inválidos.
NDIS_STATUS_NOT_SUPPORTED
Os drivers de protocolo NDIS 6.0 e posteriores não devem retornar esse status. Um NDIS 5. O driver de protocolo x que não dá suporte a Plug and Play pode retornar esse status em resposta a um NetEventSetPower para indicar que o NDIS deve desassociá-lo do adaptador subjacente.
NDIS_STATUS_INVALID_PORT
O NDIS falhou na solicitação porque uma porta NDIS inválida foi especificada em um evento NetEventPortActivation ou NetEventPortDeactivation PnP.
NDIS_STATUS_INVALID_PORT_STATE
Falha no NDIS na solicitação porque uma porta NDIS estava em um estado de porta inválido. As portas são especificadas em um evento NetEventPortActivation ou NetEventPortDeactivation PnP.
NDIS_STATUS_FAILURE
As tentativas dos drivers sobressociantes de processar o evento propagado Plug and Play ou Gerenciamento de Energia falharam.
 

O valor retornado é significativo somente quando o evento propagado é um evento NetEventQueryPower ou NetEventQueryRemoveDevice . Para todos os outros eventos propagados, o valor retornado é sempre NDIS_STATUS_SUCCESS.

Se o evento for NetEventPortActivation e a chamada falhar, o chamador não deverá usar as portas associadas para receber indicações ou status indicações.

Comentários

Qualquer driver de miniporto pode chamar NdisMNetPnPEvent para gerar eventos NetEventPortActivation e NetEventPortDeactivation . Somente drivers intermediários podem fazer outras notificações de evento.

Nota Para evitar deadlocks, um driver NDIS deve fazer o seguinte:
 
Para propagar a notificação de um evento de Plug and Play de rede, um evento NDIS PnP ou um evento de Gerenciamento de Energia para drivers sobrepostos, um driver intermediário do NDIS chama NdisMNetPnPEvent no contexto da função ProtocolNetPnPEvent do driver.

Se o evento propagado for um NetEventQueryPower ou um NetEventQueryRemoveDevice, o driver intermediário deverá marcar o valor NDIS_STATUS retornado por NdisMNetPnPEvent. Se o status retornado for NDIS_STATUS_SUCCESS, o driver intermediário deverá manipular o evento e retornar NDIS_STATUS_SUCCESS de sua função ProtocolNetPnPEvent. Se o status retornado não for NDIS_STATUS_SUCCESS, o driver intermediário deverá retornar o status relatado de sua função ProtocolNetPnPEvent sem processamento adicional.

A forma como o driver intermediário processa um NetEventSetPower recebido por sua função ProtocolNetPnPEvent depende do estado de energia do dispositivo especificado. Se o estado de energia do dispositivo especificado for NdisDeviceStateD0, o driver intermediário deverá manipular o evento e chamar NdisMNetPnPEvent. Para qualquer outro estado de energia do dispositivo especificado, o driver intermediário deve primeiro chamar NdisMNetPnPEvent e, em seguida, manipular o evento.

Um driver intermediário deve chamar NdisMNetPnPEvent para propagar um NetEventReconfigure ou NetEventBindList somente se NetEventReconfigure ou NetEventBindList for indicado em um Protocolo Não NULLBindingContext. Se um NetEventReconfigure ou NetEventBindList for indicado em um Protocolo NULLBindingContext, o driver intermediário não deverá chamar NdisMNetPnPEvent para propagar o evento.

Se um driver intermediário manipular um NetEventReconfigure ou um NetEventBindList, ele deverá validar todos os dados associados ao evento.

Um driver intermediário não deve propagar os eventos NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivation ou NetEventPortDeactivation chamando NdisMNetPnPEvent.

Um driver intermediário do NDIS pode gerar seus próprios eventos de porta NDIS para miniportos virtuais conforme apropriado para os eventos NetEventPortActivation ou NetEventPortDeactivation que recebe em sua função ProtocolNetPnPEvent .

Para todos os outros eventos propagados, a função ProtocolNetPnPEvent do driver intermediário deve propagar o valor status retornado por NdisMNetPnPEvent.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI Irql_Protocol_Driver_Function(ndis), NdisMNetPnPEventInOIDRequest(ndis)

Confira também

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent