Compartir a través de


Función NdisMNetPnPEvent (ndis.h)

Los controladores de minipuerto de NDIS (y los controladores intermedios registrados como controladores de minipuerto) llaman a la función NdisMNetPnPEvent para originar un evento de Plug and Play de red, un evento PnP de NDIS o un evento de Administración de energía o propagarlo a controladores 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 miniporte 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 NET_PNP_EVENT_NOTIFICATION estructura, que describe el evento de Plug and Play de red, el evento PnP de NDIS o el evento de administración de energía.

Importante

Si el campo VPortId de NetPnpEventNotification se establece en un valor distinto de NDIS_DEFAULT_VPORT_ID, el miembro Flags debe establecerse en NET_EVENT_FLAGS_VPORT_ID_VALID para que VPortId surta 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 de administración de energía o Plug and Play.
NDIS_STATUS_RESOURCES
Los controladores que se sobreponen no pudieron obtener los recursos del sistema necesarios para satisfacer el evento indicado Plug and Play o Administración de energía.
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. El controlador de protocolo x que no admite Plug and Play puede devolver este estado en respuesta a netEventSetPower para indicar que NDIS debe desenlacerlo 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 PnP netEventPortActivation o NetEventPortDeactivation .
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 evento PnP NetEventPortActivation o NetEventPortDeactivation .
NDIS_STATUS_FAILURE
Error en los intentos de los controladores excesivos de procesar el evento de Plug and Play propagado o administración de energía.
 

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.

Comentarios

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 de OID mediante una llamada a NdisMOidRequestComplete.
 
Para propagar la notificación de un evento de Plug and Play de red, 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 NetEventQueryPower o NetEventQueryRemoveDevice, el controlador intermedio debe comprobar el valor de 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 desde su función ProtocolNetPnPEvent . Si el estado devuelto no es NDIS_STATUS_SUCCESS, el controlador intermedio debe devolver el estado notificado de su función ProtocolNetPnPEvent sin ningún procesamiento adicional.

La forma en que el controlador intermedio procesa un NetEventSetPower recibido por su función ProtocolNetPnPEvent 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 un NetEventReconfigure o NetEventBindList solo si netEventReconfigure o NetEventBindList se indica en un ProtocolBindingContext que no sea NULL. Si se indica netEventReconfigure o NetEventBindList en un ProtocolBindingContextNULL, el controlador intermedio no debe llamar a NdisMNetPnPEvent para propagar el evento.

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

Un controlador intermedio no debe propagar los eventos NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivation o NetEventPortDeactivation mediante una llamada a NdisMNetPnPEvent.

Un controlador intermedio NDIS puede generar sus propios eventos de puerto NDIS para miniportes virtuales según corresponda para los eventos NetEventPortActivation o 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 Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library 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