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.
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.
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.
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.
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.
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.
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
NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS NdisIMInitializeDeviceInstanceExConsulta de la configuración de conmutador extensible de Hyper-V