Compartir a través de


estructura NET_PNP_EVENT (netpnp.h)

La estructura NET_PNP_EVENT describe un evento de red Plug and Play (PnP), un evento PnP de NDIS o un evento de administración de energía.

Sintaxis

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;

Miembros

NetEvent

Código de evento que describe el evento como uno de los siguientes:

NetEventSetPower

Indica que el administrador de energía ha enviado una solicitud Set Power, que especifica una transición a un estado de energía del sistema. NDIS traduce este estado a un estado de alimentación del dispositivo adecuado para el dispositivo.

Para obtener más información, vea la sección Comentarios.

NetEventQueryPower

Indica que el administrador de energía ha enviado una solicitud de power de consulta, que solicita una transición a un estado de energía del sistema. NDIS traduce este estado a un estado de alimentación del dispositivo adecuado para el dispositivo.

Para obtener más información, vea la sección Comentarios.

NetEventQueryRemoveDevice

Indica que el Administrador de PnP ha enviado una solicitud de eliminación de dispositivo de consulta. El Administrador de PnP envía esta solicitud para consultar si se puede quitar un dispositivo sin interrumpir las operaciones.

NetEventCancelRemoveDevice

Indica que el Administrador de PnP ha enviado una solicitud Cancelar quitar dispositivo. El Administrador de PnP envía esta solicitud para cancelar la eliminación de un dispositivo después de que el Administrador de PnP envíe una solicitud de eliminación de dispositivo de consulta.

NetEventReconfigure

Indica que la configuración ha cambiado para un componente de red. Por ejemplo, si un usuario, a través de la carpeta Conexiones de red y de acceso telefónico, cambia la dirección IP de TCP/IP, NDIS indica el evento NetEventReconfigure al protocolo TCP/IP. Además, un controlador intermedio normalmente usa este evento como desencadenador para llamar a . función NdisIMInitializeDeviceInstanceEx e inicia sus miniportes virtuales. Para obtener más información sobre NetEventReconfigure, vea NetEventIMReEnableDevice.

NetEventBindList

Indica a un controlador de protocolo que se ha reconfigurado el orden de procesamiento de la lista de enlace. Esta lista indica un orden relativo que se aplica a los enlaces al procesar, por ejemplo, una solicitud de usuario que podría enrutarse a uno de varios enlaces. El búfer que se pasa con este evento contiene una lista de nombres de dispositivo que tienen el formato de cadenas Unicode terminadas en NULL. El formato de cada nombre de dispositivo es idéntico al miembro AdapterName que se pasa a una llamada a la función ProtocolBindAdapterEx.

NetEventBindsComplete

Indica que un controlador de protocolo está enlazado a todas las NIC a las que puede enlazar. NDIS no indicará más NIC al protocolo a menos que se conecte una NIC PnP al sistema.

NetEventPnPCapabilities

Indica que el usuario ha habilitado o deshabilitado las funcionalidades de reactivación del adaptador subyacente. (El enlace lo especifica el parámetro ProtocolBindingContext que se pasa a la función ProtocolNetPnPEvent).

NetEventPause

Indica que el enlace de protocolo especificado debe especificar el estado de pausa. El enlace escribirá el estado Pausado después de que NDIS haya completado todas las solicitudes de envío pendientes para el enlace.

NetEventRestart

Indica que el enlace de protocolo especificado ha entrado en el estado Reinicio. Una vez que el controlador de protocolo esté listo para reanudar las operaciones de envío y recepción del enlace, el enlace entra en estado En ejecución.

NetEventPortActivation

Indica la activación de una lista de puertos asociados al enlace especificado.

NetEventPortDeactivation

Indica la desactivación de una lista de puertos asociados al enlace especificado.

NetEventIMReEnableDevice

Indica que la configuración ha cambiado para un miniport virtual de un controlador intermedio NDIS 6.0 o posterior. netEventIMReEnableDevice es similar al evento NetEventReconfigure, excepto que el controlador intermedio recibe este evento para un único miniport virtual y el evento NetEventReconfigure se aplica a todos los miniportes virtuales del controlador intermedio. Por ejemplo, un controlador intermedio recibe el evento NetEventIMReEnableDevice cuando un usuario deshabilita y, a continuación, habilita un único miniport virtual desde el Administrador de dispositivos u otro origen. Para obtener ejemplos de administración intermedia de energía del controlador, consulte el ejemplo de controlador intermedio NDIS MUX y Notificar al controlador objeto disponible en el repositorio de ejemplos de controladores de Windows de repositorio en GitHub.

NetEventNDKEnable

Indica que el kernel directo de red (NDK) está habilitado actualmente.

NetEventNDKDisable

Indica que NDK está deshabilitado actualmente.

NetEventFilterPreDetach

Indica que un filtro está a punto de desasociarse, de modo que el filtro pueda realizar cualquier limpieza necesaria que no sea posible en el controlador de FilterDetach (ya que las rutas de acceso OID e indicación se cierran en ese momento).

NetEventBindFailed

Indica que se ha producido un error de evento de enlace.

NetEventSwitchActivate

Indica que el conmutador extensible de Hyper-V ha completado la activación y las extensiones de conmutador ahora pueden consultar de forma segura para una configuración adicional del conmutador. La indicación solo se usa en la pila de conmutador extensible de Hyper-V, emitida por la miniporte de extensión. Consulte Consulta del y NDIS_SWITCH_PARAMETERS de configuración de conmutador extensible de Hyper-V para obtener más información.

NetEventInhibitBindsAbove

Evento sincrónico que impide que otros filtros y protocolos se enlacen al adaptador de miniport. Los filtros o protocolos enlazados anteriormente se desenlazará antes de que se complete el evento. Las reglas de uso se indican a continuación.

  • Evite dejar el adaptador de miniporte en estado de inhibidor, durante más de 1000 milisegundos.
  • Este evento solo se puede emitir después de miniportInitializeEx y no se debe emitir después de que se devuelva MiniportHaltEx.
  • Este evento solo se puede emitir cuando el adaptador de miniporte está en estado D0.
  • Dado que este evento está bloqueando, no debe emitirse por ningún contexto que provoque un interbloqueo.
  • Los bloqueos no deben mantenerse al emitir este evento.
  • Este evento debe emitirse en PASSIVE_LEVEL.
Este evento está disponible a partir de la versión 6.50 de NDIS y debe usarse con la versión V2 o posterior de NET_PNP_EVENT. Este evento puede ser emitido opcionalmente por un controlador de miniport. Los protocolos y filtros no pueden recibir este evento ni emitirlo.

NetEventAllowBindsAbove

Evento asincrónico que invierte los efectos de NetEventInhibitBindsAbove. Las reglas de uso se indican a continuación.

  • Este evento solo se puede emitir después de miniportInitializeEx y no se debe emitir después de que se devuelva MiniportHaltEx.
  • Este evento solo se puede emitir cuando el adaptador de miniporte está en estado D0.
  • Los bloqueos no deben mantenerse al emitir este evento.
  • Este evento debe emitirse en PASSIVE_LEVEL.
Este evento está disponible a partir de la versión 6.50 de NDIS y debe usarse con la versión V2 o posterior de NET_PNP_EVENT. Este evento puede ser emitido opcionalmente por un controlador de miniport. Los protocolos y filtros no pueden recibir este evento ni emitirlo.

NetEventRequirePause

Se debe pausar un evento sincrónico que indique los protocolos y filtros, incluido el adaptador de miniport. Se garantiza que los protocolos y filtros y el adaptador de miniportar se pausan cuando se devuelve la rutina de NdisMNetPnPEvent. Las reglas de uso se indican a continuación.

  • Evite retrasar los eventos NetEventAllowStart y NetEventRequirePause durante más de 1000 milisegundos para evitar retrasos en las aplicaciones de usuario.
  • Este evento solo se puede emitir después de miniportInitializeEx y no se debe emitir después de que se devuelva MiniportHaltEx.
  • No hay ninguna garantía de que NDIS llame a miniportPause después de emitir este evento. En concreto, si el adaptador de miniporte ya está en pausa, NDIS no introducirá un bucle adicional de pausa de inicio. Esto significa que la cantidad de veces que MiniportPause llamada no es mayor que, menor o igual que la cantidad en que se emite este evento.
  • Dado que este evento está bloqueando, no debe emitirse por ningún contexto que provoque un interbloqueo.
  • Los bloqueos no deben mantenerse al emitir este evento.
Este evento está disponible a partir de la versión 6.50 de NDIS y debe usarse con la versión V2 o posterior de NET_PNP_EVENT. Este evento puede ser emitido opcionalmente por un controlador de miniport. Los protocolos y filtros no pueden recibir este evento ni emitirlo.

NetEventAllowStart

No es necesario pausar un evento asincrónico que indique los protocolos y filtros, incluido el adaptador de miniport. Las reglas de uso se indican a continuación. No hay ningún estado de pausa garantizado para ningún controlador en los protocolos y filtros después de que se devuelva la rutina de NdisMNetPNPEvent.

  • Este evento solo se puede emitir después de miniportInitializeEx y no se debe emitir después de que se devuelva MiniportHaltEx.
  • Dado que este evento está bloqueando, no debe emitirse por ningún contexto que provoque un interbloqueo.
  • Los bloqueos no deben mantenerse al emitir este evento.
Este evento está disponible a partir de la versión 6.50 de NDIS y debe usarse con la versión V2 o posterior de NET_PNP_EVENT. Este evento puede ser emitido opcionalmente por un controlador de miniport. Los protocolos y filtros no pueden recibir este evento ni emitirlo.

Buffer

Dirección de un búfer que contiene información específica del evento indicado en el miembro de NetEvent. Para cada tipo de evento, el búfer contiene la siguiente información:

NetEventSetPower

El búfer contiene el estado de alimentación del dispositivo al que realiza la transición.

Cuando NDIS llama a la función ProtocolNetPnPEvent de un controlador de protocolo, el estado del dispositivo es NDIS_DEVICE_POWER_STATE, que puede ser uno de los siguientes valores:

NdisDeviceStateUnspecified

El dispositivo de red no admite la administración de energía.

NdisDeviceStateD0

El estado totalmente alimentado, en el que el dispositivo ofrece toda la funcionalidad y el rendimiento.

NdisDeviceStateD1

Un estado de baja potencia, en el que el dispositivo no respeta las solicitudes de transmisión del host, los datos recibidos por el dispositivo no se transfieren a la memoria del host y no se pueden producir interrupciones. Es posible que se pierda algún contexto de dispositivo. En función de las funcionalidades de la NIC y su controlador de minipuerto, es posible que el dispositivo pueda generar una señal de reactivación.

NdisDeviceStateD2

Un estado de baja potencia similar a NdisDeviceStateD1, salvo que normalmente se guardan más energía y menos contexto y se requiere más tiempo para realizar la transición al estado totalmente alimentado.

NdisDeviceStateD3

Estado desactivado, en el que la alimentación se ha quitado completamente del dispositivo.

En el caso de los controladores de protocolo, NdisDeviceStateD0 significa que la NIC está totalmente alimentada y está disponible para las operaciones normales. Cualquier otro estado de dispositivo significa que el dispositivo no está totalmente encendido y no está disponible para enviar y recibir datos de red.

NetEventQueryPower

El búfer contiene el estado de energía del dispositivo que se solicita para el dispositivo. El estado del dispositivo es NDIS_DEVICE_POWER_STATE (que se describe en la descripción del valor de NetEventSetPower).

NetEventQueryRemoveDevice

El contenido del búfer se NULL.

NetEventCancelRemoveDevice

El contenido del búfer se NULL.

NetEventReconfigure

El búfer puede contener datos específicos del protocolo. El controlador de protocolo es responsable de validar estos datos.

NetEventBindList

El búfer contiene una lista de enlaces revisada para el componente de red que el NET_PNP_EVENT_NOTIFICATION estructura se está pasando. La lista de enlaces, que es una serie de cadenas Unicode terminadas en NULL, tiene un formato REG_MULTI_SZ. Cada una de las cadenas es un nombre de adaptador. Los clientes TDI que están enlazados a un protocolo usan esta lista de enlaces para reordenar sus enlaces. El controlador de protocolo es responsable de validar esta lista.

NetEventBindsComplete

El contenido del búfer se NULL.

NetEventPnPCapabilities

El búfer es un ULONG que contiene una máscara de bits. Cuando se establece la marca NDIS_DEVICE_WAKE_UP_ENABLE en la máscara de bits, se habilitan las funcionalidades de reactivación de la NIC. De lo contrario, las funcionalidades de reactivación de la NIC están deshabilitadas. (El enlace lo especifica el parámetro ProtocolBindingContext que se pasa a ProtocolNetPnPEvent). Cuando se establece en cero, esta marca indica que las funcionalidades de reactivación de la NIC están deshabilitadas.

NetEventPause

El búfer contiene un NDIS_PROTOCOL_PAUSE_PARAMETERS estructura.

NetEventRestart

El búfer puede contener NULL o un NDIS_PROTOCOL_RESTART_PARAMETERS estructura. NDIS proporciona un puntero a una estructura de NDIS_RESTART_ATTRIBUTES en el RestartAttributes miembro de la estructura NDIS_PROTOCOL_RESTART_PARAMETERS.

Nota Si el búfer es NULL, los atributos de reinicio no han cambiado desde el reinicio anterior.
 

NetEventPortActivation

El búfer contiene la primera entrada de una lista de NDIS_PORT estructuras que identifican los puertos que activará NDIS. Puede usar el miembro Next de la estructura NDIS_PORT para obtener la siguiente estructura de la lista.

NetEventPortDeactivation

El búfer contiene una matriz de números de puerto, de tipo NDIS_PORT_NUMBER (definido como ULONG), que identifican los puertos NDIS que NDIS desactivará. Para calcular el número de elementos de la matriz, divida el valor del miembro BufferLength, que se encuentra en la estructura NET_PNP_EVENT especificada en el miembro NetPnPEvent de NET_PNP_EVENT_NOTIFICATION, por sizeof(NDIS_PORT_NUMBER).

NetEventIMReEnableDevice

El búfer contiene un puntero a una variable de tipo NDIS_STRING que contiene una cadena Unicode terminada en null que asigna un nombre al objeto de dispositivo de un miniport virtual para el dispositivo que se está habilitando. La cadena es un nombre de ruta de acceso completo, por ejemplo, \Device\DeviceName.

NetEventNDKEnable

El miembro Buffer es NULL.

NetEventNDKDisable

El miembro Buffer es NULL.

NetEventFilterPreDetach

El miembro Buffer es NULL.

NetEventBindFailed

El búfer contiene una estructura de NDIS_BIND_FAILED_NOTIFICATION.

NetEventSwitchActivate

El contenido del búfer es NULL.

NetEventAllowBindsAbove

El contenido del búfer es NULL.

NetEventInhibitBindsAbove

El contenido del búfer es NULL.

NetEventAllowStart

El contenido del búfer es NULL.

NetEventRequirePause

El contenido del búfer es NULL.

BufferLength

Número de bytes de información específica del evento en Búfer.

NdisReserved[4]

Área reservada para el uso de NDIS.

TransportReserved[4]

Área reservada para el conductor del transporte.

TdiReserved[4]

Área reservada para el uso de TDI.

TdiClientReserved[4]

Área reservada para la que usa un cliente TDI.

Observaciones

En NDIS 6.0 y versiones posteriores, cuando el sistema operativo emite un evento PnP del sistema o un evento de administración de energía a un objeto de dispositivo de destino que representa un adaptador de miniport, NDIS traduce el evento en un estructura NET_PNP_EVENT_NOTIFICATION. El miembro NetPnPEvent de la estructura NET_PNP_EVENT_NOTIFICATION es una estructura NET_PNP_EVENT.

NDIS pasa un puntero a la estructura NET_PNP_EVENT a cada controlador de protocolo enlazado al adaptador de miniport mediante una llamada a la función ProtocolNetPnPEvent del controlador de protocolo. El controlador de protocolo debe guardar este puntero, ya que el puntero es un parámetro de entrada en la función NdisCompleteNetPnPEvent, que el controlador llama a para completar la llamada a ProtocolNetPnPEvent de forma asincrónica.

NDIS pasa un puntero a la estructura NET_PNP_EVENT a cada controlador de filtro enlazado al adaptador de miniport mediante una llamada a la función FilterNetPnP Event del controlador de filtro. El controlador de filtro no tiene que guardar este puntero porque el controlador debe completar la llamada a FilterNetPnPEvent sincrónicamente.

A partir de NDIS 6.30, el controlador de protocolo o filtro debe seguir estas instrucciones cuando NDIS llama a las funciones de ProtocolNetPnPEvent o FilterNetPnPEvent:

  • Si el miembro NetEvent de la estructura de NET_PNP_EVENT está establecido en NetEventSetPower, el controlador debe dejar de generar nuevas solicitudes de E/S. Además, el controlador no debe esperar a que se completen las solicitudes de E/S pendientes.

    Después de que el protocolo o el controlador de filtro vuelva de ProtocolNetPnPEvent o FilterNetPnPEvent, NDIS no pausará y reiniciará estos controladores durante las transiciones de estado de energía si se cumplen las condiciones siguientes:

    • El controlador de miniport subyacente establece la marca NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND en la estructura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES. El controlador pasa un puntero a esta estructura en su llamada a la función NdisMSetMiniportAttributes.
    • Todos los controladores de filtro que están conectados al controlador de minipuerto admiten NDIS 6.30 o versiones posteriores de NDIS.
    • Todos los controladores de protocolo que están enlazados al controlador de miniportar admiten NDIS 6.30 o versiones posteriores de NDIS.
  • Si el miembro NetEvent de la estructura de NET_PNP_EVENT está establecido en NetEventSetPower o NetEventQueryPower, el controlador no debe esperar a que se completen las solicitudes de E/S pendientes.
El miembro NetEvent de la estructura NET_PNP_EVENT identifica el tipo de evento plug and play o de administración de energía. El buffer contiene información específica del tipo de evento.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 5.1 y NDIS 6.0 y versiones posteriores. Para obtener más información sobre la versión NDIS 5.1 de esta estructura, consulte NET_PNP_EVENT (NDIS 5.1).
encabezado de netpnp.h (include Ndis.h, Netpnp.h)

Consulte también

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 de

Consulta de la configuración de conmutador extensible de Hyper-V