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 |
---|---|
|
Los controladores que se sobreponen procesan correctamente el evento de administración de energía o Plug and Play. |
|
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 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. 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 produjo un error en la solicitud porque se especificó un puerto NDIS no válido en un evento PnP netEventPortActivation o NetEventPortDeactivation . |
|
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 . |
|
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.
- 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.
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) |