Compartilhar via


NET_PNP_EVENT estrutura (netpnp.h)

A estrutura NET_PNP_EVENT descreve um evento PnP (Plug and Play) de rede, 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 Set Power, que especifica uma transição para um estado de energia do sistema. O NDIS converte esse estado em um estado de energia de 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 do Query Power, que solicita uma transição para um estado de energia do sistema. O NDIS converte esse estado em um estado de energia de 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 de 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 Conexões de Rede e Discagem, 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 dispositivos 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 acoplado 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 tiver concluído todas as solicitações de envio pendentes para a associação.

NetEventRestart

Indica que a associação de protocolo especificada inseriu o estado de reinicialização. Depois que o driver de protocolo estiver pronto para retomar as operações de envio e recebimento da 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 exemplo de driver intermediário do NDIS MUX e do driver de objeto de notificação disponíveis no exemplos de driver do Windows repositório no GitHub.

NetEventNDKEnable

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

NetEventNDKDisable

Indica que o NDK está desabilitado no momento.

NetEventFilterPreDetach

Indica que um filtro está prestes a ser desanexado, de modo que o filtro possa executar qualquer limpeza necessária que não seja possível no manipulador FilterDetach (porque os caminhos de OID e 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 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 é usada apenas na pilha do Comutador Extensível Hyper-V, emitida pelo miniporto de extensão. Consulte Consultando o de Configuração do Comutador Extensível 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 miniporto. Todos os filtros ou protocolos associados anteriormente serão desvinculados antes da conclusão do evento. As regras de uso estão abaixo.

  • Evite deixar o adaptador de miniporto no estado de inibição por mais de 1000 milissegundos.
  • Esse evento só pode ser emitido depois que MiniportInitializeEx começa e não deve ser emitido após miniportHaltEx retorna.
  • Esse evento só pode ser emitido quando o adaptador de miniporto estiver 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 do NDIS versão 6.50 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 miniporto. Os protocolos e filtros não podem receber esse evento ou emiti-lo.

NetEventAllowBindsAbove

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

  • Esse evento só pode ser emitido depois que MiniportInitializeEx começa e não deve ser emitido após miniportHaltEx retorna.
  • Esse evento só pode ser emitido quando o adaptador de miniporto estiver 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 do NDIS versão 6.50 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 miniporto. Os 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 miniporto são garantidos para serem pausados quando o NdisMNetPnPEvent rotina retorna. As regras de uso estão abaixo.

  • Evite adiar os eventos NetEventAllowStart e NetEventRequirePause por mais de 1000 milissegundos para evitar atrasos em aplicativos de usuário.
  • Esse evento só pode ser emitido depois que MiniportInitializeEx começa e não deve ser emitido após miniportHaltEx retorna.
  • Não há garantia de que o NDIS chamará MiniportPause depois que esse evento for emitido. Em particular, se o adaptador de miniporto já estiver em pausa, o NDIS não introduzirá um loop de pausa inicial extra. Isso significa que a quantidade de vezes MiniportPause chamada não é maior que, menor ou igual à quantidade 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 do NDIS versão 6.50 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 miniporto. Os 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á um estado de pausa garantido para qualquer driver nos protocolos e filtros após o retorno da rotina de NdisMNetPnPEvent.

  • Esse evento só pode ser emitido depois que MiniportInitializeEx começa e não deve ser emitido após miniportHaltEx retorna.
  • 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 do NDIS versão 6.50 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 miniporto. Os 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 habilitada e está disponível para operações normais. Qualquer outro estado do dispositivo significa que o dispositivo não está totalmente alimentado 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 de 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 de NDIS_RESTART_ATTRIBUTES no RestartAttributes membro da estrutura NDIS_PROTOCOL_RESTART_PARAMETERS.

Observação 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 Próximo 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 do Buffer é NULL.

NetEventNDKDisable

O membro do Buffer é NULL.

NetEventFilterPreDetach

O membro do 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 em buffer.

NdisReserved[4]

Uma área reservada para uso pelo NDIS.

TransportReserved[4]

Uma área reservada para uso pelo motorista de transporte.

TdiReserved[4]

Uma área reservada para uso pela TDI.

TdiClientReserved[4]

Uma área reservada para uso por um cliente TDI.

Observações

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 miniporto, 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 miniporto 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 miniporto 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 o ProtocolNetPnPEvent ou funções FilterNetPnPEvent:

  • Se o NetEvent membro da estrutura de 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 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 netEvent membro da estrutura de 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 do Buffer de contém informações específicas para o tipo de evento.

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte no NDIS 5.1 e 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)

Consulte 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 o de configuração do comutador extensível Hyper-V