Compartir a través de


MINIPORT_DEVICE_PNP_EVENT_NOTIFY función de devolución de llamada (ndis.h)

NDIS llama a la función MiniportDevicePnPEventNotify de un controlador de miniporte para notificar al controlador los eventos de Plug and Play (PnP).

Nota Debe declarar la función mediante el tipo MINIPORT_DEVICE_PNP_EVENT_NOTIFY . Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

MINIPORT_DEVICE_PNP_EVENT_NOTIFY MiniportDevicePnpEventNotify;

void MiniportDevicePnpEventNotify(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNET_DEVICE_PNP_EVENT NetDevicePnPEvent
)
{...}

Parámetros

[in] MiniportAdapterContext

Identificador de un área de contexto que el controlador de minipuerto asignó en su función MiniportInitializeEx . El controlador de minipuerto usa este área de contexto para mantener la información de estado de un adaptador de minipuerto.

[in] NetDevicePnPEvent

Puntero a una estructura de NET_DEVICE_PNP_EVENT que describe un evento de Plug and Play del dispositivo.

Valor devuelto

None

Observaciones

Un controlador especifica el punto de entrada MiniportDevicePnPEventNotify cuando llama al Función NdisMRegisterMiniportDriver .

NDIS llama a la función MiniportDevicePnPnPEventNotify del controlador con el miembro DevicePnPEvent del parámetro NetDevicePnPEvent establecido en NdisDevicePnPEventPowerProfileChanged después de uno de los siguientes eventos:

  • Se ha completado la inicialización del controlador.
  • El controlador recibió una notificación de OID_PNP_SET_POWER que especifica el estado encendido ( NdisDeviceStateD0).
En el segundo caso, el valor de InformationBuffer indica si el sistema se está ejecutando con batería (NdisPowerProfileBattery) o la alimentación de CA (NdisPowerProfileAcOnline). Un controlador puede usar esta información para ajustar el consumo de energía del adaptador de miniporte especificado. Por ejemplo, el controlador para un dispositivo LAN inalámbrico podría reducir el consumo de energía si el sistema se está ejecutando en batería o aumentar el consumo de energía si el sistema se está ejecutando en energía de CA.

Cuando un controlador recibe una notificación de eliminación sorpresa (el miembro DevicePnPEvent del parámetro NetDevicePnPEvent es NdisDevicePnPEventSurpriseRemoved), debe:

  • Tenga en cuenta internamente que se ha quitado el dispositivo.
  • Cancele los IRP pendientes que envió al controlador de bus subyacente.
Después de que NDIS llame a la función MiniportDevicePnPEventNotify para indicar una eliminación sorpresa, NDIS llama a la función MiniportHaltEx del controlador. Si el controlador recibe solicitudes de envío o solicitudes de OID antes de que NDIS llame a MiniportHaltEx, debe completar inmediatamente dichas solicitudes con un valor de estado de NDIS_STATUS_NOT_ACCEPTED.

NDIS llama a MiniportDevicePnPEventNotify en IRQL = PASSIVE_LEVEL.

Ejemplos

Para definir una función MiniportDevicePnPEventNotify , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir una función MiniportDevicePnPNPEventNotify denominada "MyDevicePnPEventNotify", use el tipo MINIPORT_DEVICE_PNP_EVENT_NOTIFY como se muestra en este ejemplo de código:

MINIPORT_DEVICE_PNP_EVENT_NOTIFY MyDevicePnPEventNotify;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
VOID
 MyDevicePnPEventNotify(
    NDIS_HANDLE  MiniportAdapterContext,
    PNET_DEVICE_PNP_EVENT  NetDevicePnPEvent
    )
  {...}

El tipo de función MINIPORT_DEVICE_PNP_EVENT_NOTIFY se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función MINIPORT_DEVICE_PNP_EVENT_NOTIFY en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.

Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Windows
Encabezado ndis.h (incluya Ndis.h)
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI NdisOidComplete

Consulte también

MiniportHaltEx

MiniportInitializeEx

NET_DEVICE_PNP_EVENT

NdisMRegisterMiniportDriver

OID_PNP_SET_POWER