Función NdisMRegisterInterruptEx (ndis.h)

Los controladores de miniporte NDIS llaman a la función NdisMRegisterInterruptEx para registrar una interrupción.

Sintaxis

NDIS_STATUS NdisMRegisterInterruptEx(
  [in]  NDIS_HANDLE                              MiniportAdapterHandle,
  [in]  NDIS_HANDLE                              MiniportInterruptContext,
  [in]  PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS MiniportInterruptCharacteristics,
  [out] PNDIS_HANDLE                             NdisInterruptHandle
);

Parámetros

[in] MiniportAdapterHandle

Identificador del adaptador de minipuerto que NDIS pasó al Función MiniportInitializeEx .

[in] MiniportInterruptContext

Puntero a un bloque de información de contexto. El controlador de minipuerto asigna esta memoria para almacenar información sobre la interrupción. NDIS pasa el bloque de información de contexto en llamadas posteriores a otras funciones asociadas a la interrupción.

[in] MiniportInterruptCharacteristics

Puntero a un NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS estructura que creó el controlador de minipuerto. El controlador inicializa esta estructura con puntos de entrada del controlador y parámetros de configuración que definen las características de interrupción.

[out] NdisInterruptHandle

Puntero a un identificador NDIS. NDIS escribe el identificador del objeto de interrupción recién creado en la dirección que especifica el puntero NdisInterruptHandle .

Valor devuelto

NdisMRegisterInterruptEx puede devolver uno de los siguientes valores:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
NDIS inicializó el objeto de interrupción y proporcionó un identificador de interrupción válido en NdisInterruptHandle . NDIS reclamaba recursos de hardware y configuraba las funciones a las que llama cuando se produce una interrupción.
NDIS_STATUS_RESOURCES
Error de NdisMRegisterInterruptEx debido a recursos insuficientes.
NDIS_STATUS_XXX o NT_STATUS_XXX
Error al intentar inicializar el objeto de interrupción por motivos distintos de los de la lista anterior.

Comentarios

Un controlador de miniport debe llamar a NdisMRegisterInterruptEx desde su función MiniportInitializeEx si administra una NIC que genera interrupciones.

MiniportInitializeEx debe llamar a Función NdisMSetMiniportAttributes antes de llamar a NdisMRegisterInterruptEx.

El controlador de minipuerto debe especificar puntos de entrada para las siguientes funciones de servicio de interrupción:

MiniportInterrupt

MiniportInterruptDPC

MiniportDisableInterruptEx

MiniportEnableInterruptEx

Si la NIC admite interrupciones señaladas por mensajes (MSI), el controlador de miniporte debe especificar puntos de entrada para las siguientes funciones de servicio MSI:

MiniportMessageInterrupt

MiniportMessageInterruptDPC MiniportDisableMessageInterrupt MiniportEnableMessageInterrupt

Si un controlador especifica puntos de entrada para MSI, también debe especificar puntos de entrada para las funciones de servicio de interrupción que no sean MSI. Además, si NdisMRegisterInterruptEx devuelve NDIS_STATUS_SUCCESS, el controlador debe examinar el valor del miembro InterruptType del NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS estructura para determinar el tipo de interrupciones concedidas por NDIS. Si NDIS no puede conceder compatibilidad con MSI, concederá compatibilidad con interrupciones basadas en líneas.

Cuando se habilitan interrupciones en la NIC, se puede llamar a la función MiniportInterrupt(o MiniportMessageInterrupt) de un controlador en cualquier momento después de que el controlador llame a NdisMRegisterInterruptEx, incluso antes de que se devuelva NdisMRegisterInterruptEx . Por lo tanto, un controlador no debe llamar a NdisMRegisterInterruptEx hasta que esté listo para controlar una interrupción.

Los controladores llaman a Función NdisMDeregisterInterruptEx para liberar recursos asignados anteriormente con NdisMRegisterInterruptEx.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con 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 Init_DeRegisterInterrupt(ndis), Init_RegisterInterrupt(ndis), Irql_Interrupt_Function(ndis), NdisMDeregisterInterruptEx(ndis)

Consulte también

MiniportDisableInterruptEx

MiniportDisableMessageInterrupt

MiniportEnableInterruptEx

MiniportEnableMessageInterrupt

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS

NdisMDeregisterInterruptEx

NdisMSetMiniportAttributes