Compartir a través de


Función NdisMNetPnPEvent (ndis.h)

Los controladores de miniporte NDIS (y controladores intermedios registrados como controladores de miniporte) llaman a la función NdisMNetPEvent NdisMNetPEvent para originar un evento de red Plug and Play, un evento PnP de NDIS o un evento de Administración de energía o propagarlo a controladores demasiado excesivos.

Sintaxis

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

Parámetros

[in] MiniportAdapterHandle

Identificador NDIS que NDIS proporciona en el parámetro MiniportAdapterHandle de la función MiniportInitializeEx. Este identificador identifica el adaptador de miniport que se ve afectado por el evento. Si el autor de la llamada es un controlador intermedio, este es el controlador del miniport virtual.

NetPnPEventNotification

Puntero a un NET_PNP_EVENT_NOTIFICATION estructura, que describe el evento plug and play de red, el evento PnP de NDIS o el evento de administración de energía.

Importante

Si el VPortId campo de NetPnpEventNotification se establece en un valor diferente de NDIS_DEFAULT_VPORT_ID, el miembro Flags debe establecerse en NET_EVENT_FLAGS_VPORT_ID_VALID para que VPortId surtan efecto.

Valor devuelto

NdisMNetPnPEvent puede devolver lo siguiente:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
Los controladores que se sobreponen procesan correctamente el evento Plug and Play o Power Management.
NDIS_STATUS_RESOURCES
Los controladores que se sobreponen no pudieron obtener los recursos necesarios del sistema para satisfacer el evento Plug and Play o Power Management indicado.
NDIS_STATUS_INVALID_PARAMETER
NDIS produjo un error en la llamada porque algunos de los parámetros de entrada no son válidos.
NDIS_STATUS_NOT_SUPPORTED
Los controladores de protocolo NDIS 6.0 y versiones posteriores no deben devolver este estado. NDIS 5.controlador de protocolo x que no admite Plug and Play puede devolver este estado en respuesta a una NetEventSetPower para indicar que NDIS debe desenlacerla del adaptador subyacente.
NDIS_STATUS_INVALID_PORT
NDIS produjo un error en la solicitud porque se especificó un puerto NDIS no válido en un evento NetEventPortActivation o NetEventPortDeactivation evento PnP.
NDIS_STATUS_INVALID_PORT_STATE
NDIS produjo un error en la solicitud porque un puerto NDIS estaba en un estado de puerto no válido. Los puertos se especifican en un de NetEventPortActivation o evento NetEventPortDeactivation PnP.
NDIS_STATUS_FAILURE
Se produjo un error en los intentos de los controladores de sobreserción para procesar el evento Plug and Play o Power Management propagado.
 

El valor devuelto solo es significativo cuando el evento propagado es un evento NetEventQueryPower o NetEventQueryRemoveDevice. Para todos los demás eventos propagados, el valor devuelto siempre se NDIS_STATUS_SUCCESS.

Si el evento es netEventPortActivation y se produce un error en la llamada, el autor de la llamada no debe usar los puertos asociados en indicaciones de recepción o indicaciones de estado.

Observaciones

Cualquier controlador de miniport puede llamar a NdisMNetPnPEvent para generar eventos NetEventPortActivation y NetEventPortDeactivation. Solo los controladores intermedios pueden realizar otras notificaciones de eventos.

Nota Para evitar interbloqueos, un controlador NDIS debe hacer lo siguiente:
  • Su función MiniportOidRequest no debe llamar a NdisMNetPnPEvent.
  • Si su función MiniportOidRequest devuelve NDIS_STATUS_PENDING para una solicitud OID, el controlador NDIS no debe llamar a NdisMNetPnPEvent hasta que haya completado la solicitud OID llamando a NdisMOidRequestComplete.
 
Para propagar la notificación de un evento de red Plug and Play, un evento PnP de NDIS o un evento de Administración de energía a controladores excesivos, un controlador intermedio NDIS llama a NdisMNetPnPEvent en el contexto de la función ProtocolNetPnPEvent del controlador.

Si el evento propagado es un NetEventQueryPower o un NetEventQueryRemoveDevice, el controlador intermedio debe comprobar el valor NDIS_STATUS devuelto por NdisMNetPnPEvent. Si el estado devuelto es NDIS_STATUS_SUCCESS, el controlador intermedio debe controlar el evento y, a continuación, devolver NDIS_STATUS_SUCCESS de su función ProtocolNetPnPEvent. Si el estado devuelto no es NDIS_STATUS_SUCCESS, el controlador intermedio debe devolver el estado notificado de su ProtocolNetPnPEvent función sin procesamiento adicional.

La forma en que el controlador intermedio procesa un NetEventSetPower recibido por su función protocolNetPnPEvent de depende del estado de alimentación del dispositivo especificado. Si el estado de energía del dispositivo especificado es NdisDeviceStateD0, el controlador intermedio debe controlar el evento y, a continuación, llamar a NdisMNetPnPEvent. Para cualquier otro estado de alimentación del dispositivo especificado, el controlador intermedio primero debe llamar a NdisMNetPnPEvent y, a continuación, controlar el evento.

Un controlador intermedio debe llamar a NdisMNetPNPEvent para propagar una NetEventReconfigure o NetEventBindList solo si NetEventReconfigure o NetEventBindList se indica en unNULLProtocolBindingContext. Si NetEventReconfigure o NetEventBindList se indica en un NULLProtocolBindingContext, el controlador intermedio no debe llamar a NdisMNetPnPEvent para propagar el evento.

Si un controlador intermedio controla un NetEventReconfigure o un NetEventBindList, debe validar los datos asociados al evento.

Un controlador intermedio no debe propagar el NetEventBindsComplete , NetEventPause, NetEventRestart, NetEventPortActivationo eventos netEventPortDeactivation llamando a NdisMNetPnPEvent.

Un controlador intermedio NDIS puede generar sus propios eventos de puerto NDIS para miniportes virtuales según corresponda para la NetEventPortActivation o Eventos NetEventPortDeactivation que recibe en su función ProtocolNetPnPEvent.

Para todos los demás eventos propagados, la función ProtocolNetPnPEvent del controlador intermedio debe propagar el valor de estado devuelto por NdisMNetPnPEvent.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Universal
encabezado de ndis.h (incluya Ndis.h)
biblioteca de Ndis.lib
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI Irql_Protocol_Driver_Function(ndis), NdisMNetPNPEventInOIDRequest(ndis)

Consulte también

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent de