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