estrutura NET_PNP_EVENT (netpnp.h)

A estrutura NET_PNP_EVENT descreve um evento de Plug and Play de rede (PnP), um evento PnP NDIS ou um evento de gerenciamento de energia.

Sintaxe

typedef struct _NET_PNP_EVENT {
  NET_PNP_EVENT_CODE NetEvent;
  PVOID              Buffer;
  ULONG              BufferLength;
  ULONG_PTR          NdisReserved[4];
  ULONG_PTR          TransportReserved[4];
  ULONG_PTR          TdiReserved[4];
  ULONG_PTR          TdiClientReserved[4];
} NET_PNP_EVENT, *PNET_PNP_EVENT;

Membros

NetEvent

Um código de evento que descreve o evento como um dos seguintes:

NetEventSetPower

Indica que o power manager enviou uma solicitação Definir Energia, que especifica uma transição para um estado de energia do sistema. O NDIS converte esse estado em um estado de energia do dispositivo apropriado para o dispositivo.

Para obter mais informações, consulte a seção Comentários.

NetEventQueryPower

Indica que o power manager enviou uma solicitação de Energia de Consulta, que solicita uma transição para um estado de energia do sistema. O NDIS converte esse estado em um estado de energia do dispositivo apropriado para o dispositivo.

Para obter mais informações, consulte a seção Comentários.

NetEventQueryRemoveDevice

Indica que o Gerenciador PnP enviou uma solicitação Remover Dispositivo de Consulta. O Gerenciador de PnP envia essa solicitação para consultar se um dispositivo pode ser removido sem interromper as operações.

NetEventCancelRemoveDevice

Indica que o Gerenciador PnP enviou uma solicitação Cancelar Remover Dispositivo. O Gerenciador PnP envia essa solicitação para cancelar a remoção de um dispositivo depois que o Gerenciador PnP envia uma solicitação remover dispositivo de consulta.

NetEventReconfigure

Indica que a configuração foi alterada para um componente de rede. Por exemplo, se um usuário, por meio da pasta rede e discagem Connections, alterar o endereço IP para TCP/IP, o NDIS indicará o evento NetEventReconfigure para o protocolo TCP/IP. Além disso, um driver intermediário normalmente usa esse evento como um gatilho para chamar o Função NdisIMInitializeDeviceInstanceEx e inicie seus miniportos virtuais. Para obter mais informações sobre NetEventReconfigure, consulte NetEventIMReEnableDevice.

NetEventBindList

Indica a um driver de protocolo que sua ordem de processamento de lista de associação foi reconfigurada. Essa lista indica uma ordem relativa que se aplica a associações ao processar, por exemplo, uma solicitação de usuário que pode ser roteada para uma das várias associações. O buffer passado com esse evento contém uma lista de nomes de dispositivo formatados como cadeias de caracteres Unicode terminadas em nulo. O formato de cada nome de dispositivo é idêntico ao membro AdapterName que é passado para uma chamada para a função ProtocolBindAdapterEx .

NetEventBindsComplete

Indica que um driver de protocolo está associado a todas as NICs às quais ele pode se associar. O NDIS não indicará mais NICs para o protocolo, a menos que uma NIC PnP esteja conectada ao sistema.

NetEventPnPCapabilities

Indica que o usuário habilitou ou desabilitou os recursos de ativação do adaptador subjacente. (A associação é especificada pelo parâmetro ProtocolBindingContext que é passado para a função ProtocolNetPnPEvent .)

NetEventPause

Indica que a associação de protocolo especificada deve entrar no estado Pausando. A associação entrará no estado Pausado depois que o NDIS concluir todas as solicitações de envio pendentes para a associação.

NetEventRestart

Indica que a associação de protocolo especificada entrou no estado De reinicialização. Depois que o driver de protocolo estiver pronto para retomar as operações de envio e recebimento para a associação, a associação entrará no estado Em execução.

NetEventPortActivation

Indica a ativação de uma lista de portas associadas à associação especificada.

NetEventPortDeactivation

Indica a desativação de uma lista de portas associadas à associação especificada.

NetEventIMReEnableDevice

Indica que a configuração foi alterada para um miniporto virtual de um driver intermediário NDIS 6.0 ou posterior. NetEventIMReEnableDevice é semelhante ao evento NetEventReconfigure , exceto que o driver intermediário recebe esse evento para um único miniporto virtual e o evento NetEventReconfigure se aplica a todos os miniportos virtuais do driver intermediário. Por exemplo, um driver intermediário recebe o evento NetEventIMReEnableDevice quando um usuário desabilita e habilita um único miniporto virtual do Gerenciador de Dispositivos ou de outra fonte. Para obter exemplos de gerenciamento de energia de driver intermediário, consulte o driver intermediário do NDIS MUX e o exemplo de driver notify object disponíveis no repositório de exemplos de driver do Windows no GitHub.

NetEventNDKEnable

Indica que o NDK (Kernel Direto de Rede) está habilitado no momento.

NetEventNDKDisable

Indica que o NDK está desabilitado no momento.

NetEventFilterPreDetach

Indica que um filtro está prestes a ser desanexado, para que o filtro possa executar qualquer limpeza necessária que não seja possível no manipulador FilterDetach (porque o OID e os caminhos de indicação são fechados nesse momento).

NetEventBindFailed

Indica que ocorreu uma falha de evento de associação.

NetEventSwitchActivate

Indica que o Comutador Extensível do Hyper-V concluiu a ativação e as extensões de comutador agora podem consultar com segurança a configuração de comutador adicional. A indicação só é usada na pilha do Comutador Extensível do Hyper-V, emitida pelo miniporto de extensão. Consulte Consultando a configuração do comutador extensível do Hyper-V e NDIS_SWITCH_PARAMETERS para obter mais detalhes.

NetEventInhibitBindsAbove

Um evento síncrono que impede que outros filtros e protocolos se vinculem ao adaptador de miniporta. Todos os filtros ou protocolos que foram associados anteriormente serão desassociados antes da conclusão do evento. As regras de uso estão abaixo.

  • Evite deixar o adaptador de miniporta no estado de inibição por mais de 1000 milissegundos.
  • Esse evento só pode ser emitido após o início de MiniportInitializeEx e não deve ser emitido após o retorno de MiniportHaltEx .
  • Esse evento só pode ser emitido quando o adaptador de miniporta está em um estado D0.
  • Como esse evento está bloqueando, ele não deve ser emitido por nenhum contexto que cause um deadlock.
  • Os bloqueios não devem ser mantidos durante a emissão desse evento.
  • Esse evento deve ser emitido em PASSIVE_LEVEL.
Esse evento está disponível a partir da versão 6.50 do NDIS e deve ser usado com a versão V2 ou posterior do NET_PNP_EVENT. Opcionalmente, esse evento pode ser emitido por um driver de miniporta. Protocolos e filtros não podem receber esse evento ou emiti-lo.

NetEventAllowBindsAbove

Um evento assíncrono que inverte os efeitos de NetEventInhibitBindsAbove. As regras de uso estão abaixo.

  • Esse evento só pode ser emitido após o início de MiniportInitializeEx e não deve ser emitido após o retorno de MiniportHaltEx .
  • Esse evento só pode ser emitido quando o adaptador de miniporta está em um estado D0.
  • Os bloqueios não devem ser mantidos durante a emissão desse evento.
  • Esse evento deve ser emitido em PASSIVE_LEVEL.
Esse evento está disponível a partir da versão 6.50 do NDIS e deve ser usado com a versão V2 ou posterior do NET_PNP_EVENT. Opcionalmente, esse evento pode ser emitido por um driver de miniporta. Protocolos e filtros não podem receber esse evento ou emiti-lo.

NetEventRequirePause

Um evento síncrono que indica os protocolos e filtros, incluindo o adaptador de miniporto, deve ser pausado. Os protocolos e filtros e o adaptador de miniporta têm a garantia de serem pausados quando a rotina NdisMNetPnPEvent retornar. As regras de uso estão abaixo.

  • Evite atrasar entre os eventos NetEventAllowStart e NetEventRequirePause por mais de 1000 milissegundos para evitar atrasos em aplicativos de usuário.
  • Esse evento só pode ser emitido após o início de MiniportInitializeEx e não deve ser emitido após o retorno de MiniportHaltEx .
  • Não há nenhuma garantia de que o NDIS chamará MiniportPause depois que esse evento for emitido. Em particular, se o adaptador de miniporta já estiver em pausa, o NDIS não introduzirá um loop de pausa de início extra. Isso significa que a quantidade de vezes que MiniportPause chamado não é maior que, menor que ou igual ao valor em que esse evento é emitido.
  • Como esse evento está bloqueando, ele não deve ser emitido por nenhum contexto que cause um deadlock.
  • Os bloqueios não devem ser mantidos durante a emissão desse evento.
Esse evento está disponível a partir da versão 6.50 do NDIS e deve ser usado com a versão V2 ou posterior do NET_PNP_EVENT. Opcionalmente, esse evento pode ser emitido por um driver de miniporte. Protocolos e filtros não podem receber esse evento ou emiti-lo.

NetEventAllowStart

Um evento assíncrono que indica os protocolos e filtros, incluindo o adaptador de miniporto, não precisa ser pausado. As regras de uso estão abaixo. Não há estado de pausa garantido para nenhum driver nos protocolos e filtros após o retorno da rotina NdisMNetPnPEvent .

  • Esse evento só pode ser emitido depois que MiniportInitializeEx começar e não deve ser emitido após o retorno de MiniportHaltEx .
  • Como esse evento está bloqueando, ele não deve ser emitido por nenhum contexto que cause um deadlock.
  • Os bloqueios não devem ser mantidos durante a emissão desse evento.
Esse evento está disponível a partir da versão 6.50 do NDIS e deve ser usado com a versão V2 ou posterior do NET_PNP_EVENT. Opcionalmente, esse evento pode ser emitido por um driver de miniporte. Protocolos e filtros não podem receber esse evento ou emiti-lo.

Buffer

O endereço de um buffer que contém informações específicas do evento indicado no membro NetEvent . Para cada tipo de evento, o buffer contém as seguintes informações:

NetEventSetPower

O buffer contém o estado de energia do dispositivo para o qual o dispositivo está em transição.

Quando o NDIS chama a função ProtocolNetPnPEvent de um driver de protocolo, o estado do dispositivo é NDIS_DEVICE_POWER_STATE, que pode ser um dos seguintes valores:

NdisDeviceStateUnspecified

O dispositivo de rede não dá suporte ao gerenciamento de energia.

NdisDeviceStateD0

O estado totalmente alimentado, no qual o dispositivo fornece funcionalidade e desempenho completos.

NdisDeviceStateD1

Um estado de baixa potência, no qual as solicitações de transmissão do host não são respeitadas pelo dispositivo, os dados recebidos pelo dispositivo não são transferidos para a memória do host e nenhuma interrupção pode ocorrer. Algum contexto de dispositivo pode ser perdido. Dependendo dos recursos da NIC e de seu driver de miniporto, o dispositivo pode ser capaz de gerar um sinal de ativação.

NdisDeviceStateD2

Um estado de baixa potência semelhante a NdisDeviceStateD1, exceto que mais energia e menos contexto normalmente são salvos e mais tempo é necessário para fazer a transição para o estado totalmente alimentado.

NdisDeviceStateD3

O estado desativado, no qual a energia foi totalmente removida do dispositivo.

Para drivers de protocolo, NdisDeviceStateD0 significa que a NIC está totalmente ativada e está disponível para operações normais. Qualquer outro estado do dispositivo significa que o dispositivo não está totalmente ligado e não está disponível para enviar e receber dados de rede.

NetEventQueryPower

O buffer contém o estado de energia do dispositivo solicitado para o dispositivo. O estado do dispositivo é NDIS_DEVICE_POWER_STATE (que é descrito na descrição do valor NetEventSetPower ).

NetEventQueryRemoveDevice

O conteúdo do buffer é NULL.

NetEventCancelRemoveDevice

O conteúdo do buffer é NULL.

NetEventReconfigure

O buffer pode conter dados específicos do protocolo. O driver de protocolo é responsável por validar esses dados.

NetEventBindList

O buffer contém uma lista de associação revisada para o componente de rede que o NET_PNP_EVENT_NOTIFICATION estrutura está sendo passada. A lista de associações, que é uma série de cadeias de caracteres Unicode terminadas em nulo, tem um formato REG_MULTI_SZ. Cada uma das cadeias de caracteres é um nome de adaptador. Os clientes TDI associados a um protocolo usam essa lista de associações para reordenar suas associações. O driver de protocolo é responsável por validar essa lista.

NetEventBindsComplete

O conteúdo do buffer é NULL.

NetEventPnPCapabilities

O buffer é um ULONG que contém uma máscara de bits. Quando o sinalizador NDIS_DEVICE_WAKE_UP_ENABLE é definido na máscara de bits, os recursos de ativação da NIC são habilitados. Caso contrário, os recursos de ativação da NIC serão desabilitados. (A associação é especificada pelo parâmetro ProtocolBindingContext que é passado para ProtocolNetPnPEvent.) Quando definido como zero, esse sinalizador indica que os recursos de ativação da NIC estão desabilitados.

NetEventPause

O buffer contém um NDIS_PROTOCOL_PAUSE_PARAMETERS estrutura.

NetEventRestart

O buffer pode conter NULL ou um NDIS_PROTOCOL_RESTART_PARAMETERS estrutura. O NDIS fornece um ponteiro para uma estrutura NDIS_RESTART_ATTRIBUTES no membro RestartAttributes da estrutura NDIS_PROTOCOL_RESTART_PARAMETERS.

Nota Se o buffer for NULL, os atributos de reinicialização não serão alterados desde a reinicialização anterior.
 

NetEventPortActivation

O buffer contém a primeira entrada em uma lista de estruturas de NDIS_PORT que identificam as portas que o NDIS ativará. Você pode usar o membro Next da estrutura NDIS_PORT para obter a próxima estrutura na lista.

NetEventPortDeactivation

O buffer contém uma matriz de números de porta, do tipo NDIS_PORT_NUMBER (definido como ULONG), que identificam as portas NDIS que o NDIS desativará. Para calcular o número de elementos na matriz, divida o valor do membro BufferLength , que está na estrutura NET_PNP_EVENT especificada no membro NetPnPEvent de NET_PNP_EVENT_NOTIFICATION, por sizeof(NDIS_PORT_NUMBER).

NetEventIMReEnableDevice

O buffer contém um ponteiro para uma variável do tipo NDIS_STRING que contém uma cadeia de caracteres Unicode terminada em nulo que nomeia o objeto do dispositivo de um miniporto virtual para o dispositivo que está sendo habilitado. A cadeia de caracteres é um nome de caminho completo, por exemplo, \Device\DeviceName.

NetEventNDKEnable

O membro buffer é NULL.

NetEventNDKDisable

O membro buffer é NULL.

NetEventFilterPreDetach

O membro buffer é NULL.

NetEventBindFailed

O buffer contém uma estrutura NDIS_BIND_FAILED_NOTIFICATION .

NetEventSwitchActivate

O conteúdo do buffer é NULL.

NetEventAllowBindsAbove

O conteúdo do buffer é NULL.

NetEventInhibitBindsAbove

O conteúdo do buffer é NULL.

NetEventAllowStart

O conteúdo do buffer é NULL.

NetEventRequirePause

O conteúdo do buffer é NULL.

BufferLength

O número de bytes de informações específicas do evento no Buffer.

NdisReserved[4]

Uma área reservada para usada pelo NDIS.

TransportReserved[4]

Uma área reservada para usada pelo motorista de transporte.

TdiReserved[4]

Uma área reservada para usada pela TDI.

TdiClientReserved[4]

Uma área reservada para usada por um cliente TDI.

Comentários

No NDIS 6.0 e versões posteriores, quando o sistema operacional emite um evento PnP do sistema ou um evento de gerenciamento de energia para um objeto de dispositivo de destino que representa um adaptador de miniporte, o NDIS converte o evento em um NET_PNP_EVENT_NOTIFICATION estrutura. O membro NetPnPEvent da estrutura NET_PNP_EVENT_NOTIFICATION é uma estrutura NET_PNP_EVENT .

O NDIS passa um ponteiro para a estrutura NET_PNP_EVENT para cada driver de protocolo associado ao adaptador de miniportuário chamando a função ProtocolNetPnPEvent do driver de protocolo. O driver de protocolo deve salvar esse ponteiro, pois o ponteiro é um parâmetro de entrada para a função NdisCompleteNetPnPEvent , que o driver chama para concluir a chamada para ProtocolNetPnPEvent de forma assíncrona.

O NDIS passa um ponteiro para a estrutura NET_PNP_EVENT para cada driver de filtro associado ao adaptador de miniportuário chamando a função FilterNetPnPEvent do driver de filtro. O driver de filtro não precisa salvar esse ponteiro porque o driver deve concluir a chamada para FilterNetPnPEvent de forma síncrona.

A partir do NDIS 6.30, o driver de protocolo ou filtro deve seguir estas diretrizes quando o NDIS chama as funções ProtocolNetPnPEvent ou FilterNetPnPEvent :

  • Se o membro NetEvent da estrutura NET_PNP_EVENT estiver definido como NetEventSetPower, o driver deverá parar de gerar novas solicitações de E/S. Além disso, o driver não deve aguardar a conclusão de nenhuma solicitação de E/S pendente.

    Depois que o driver de protocolo ou filtro retornar de ProtocolNetPnPEvent ou FilterNetPnPEvent, o NDIS não pausará e reiniciará esses drivers durante as transições de estado de energia se as seguintes condições forem verdadeiras:

    • O driver de miniporto subjacente define o sinalizador NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND na estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . O driver passa um ponteiro para essa estrutura em sua chamada para a função NdisMSetMiniportAttributes .
    • Todos os drivers de filtro anexados ao driver de miniporto dão suporte ao NDIS 6.30 ou versões posteriores do NDIS.
    • Todos os drivers de protocolo associados ao driver de miniporto dão suporte ao NDIS 6.30 ou versões posteriores do NDIS.
  • Se o membro NetEvent da estrutura NET_PNP_EVENT estiver definido como NetEventSetPower ou NetEventQueryPower, o driver não deverá aguardar a conclusão de nenhuma solicitação de E/S pendente.
O membro NetEvent na estrutura NET_PNP_EVENT identifica o tipo de Plug and Play ou evento de gerenciamento de energia. O Buffer contém informações específicas para o tipo de evento.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 5.1 e no NDIS 6.0 e posterior. Para obter mais informações sobre a versão NDIS 5.1 dessa estrutura, consulte NET_PNP_EVENT (NDIS 5.1).
Cabeçalho netpnp.h (inclua Ndis.h, Netpnp.h)

Confira também

FilterNetPnPEvent

NDIS_BIND_FAILED_NOTIFICATION

NDIS_PORT

NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS

NDIS_RESTART_ATTRIBUTES

NDIS_SWITCH_PARAMETERS

NET_PNP_EVENT_NOTIFICATION

NdisCompleteNetPnPEvent

NdisIMInitializeDeviceInstanceEx

ProtocolBindAdapterEx

ProtocolNetPnPEvent

Consultando a configuração de comutador extensível do Hyper-V