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 |
---|---|
|
Los controladores que se sobreponen procesan correctamente el evento Plug and Play o Power Management. |
|
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 produjo un error en la llamada porque algunos de los parámetros de entrada no son válidos. |
|
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 produjo un error en la solicitud porque se especificó un puerto NDIS no válido en un evento NetEventPortActivation o NetEventPortDeactivation evento PnP. |
|
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. |
|
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.
- 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.
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) |