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 |
---|---|
|
Os drivers overlying processaram com êxito o evento Plug and Play ou Power Management. |
|
Os drivers overlying não puderam obter os recursos necessários do sistema para atender ao evento indicado Plug and Play ou Power Management. |
|
Falha no NDIS na chamada porque alguns dos parâmetros de entrada são inválidos. |
|
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. |
|
O NDIS falhou na solicitação porque uma porta NDIS inválida foi especificada em um evento NetEventPortActivation ou NetEventPortDeactivation PnP. |
|
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. |
|
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.
- Sua função MiniportOidRequest não deve chamar NdisMNetPnPEvent.
- Se sua função MiniportOidRequest retornar NDIS_STATUS_PENDING para uma solicitação OID, o driver NDIS não deverá chamar NdisMNetPnPEvent até que tenha concluído a solicitação OID chamando NdisMOidRequestComplete.
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) |