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

NDIS llama a la función MiniportHaltEx del controlador de miniporte para liberar recursos cuando se quita un adaptador de miniporte y para detener el hardware. Esta función coloca el miniporte en el estado Detenido, donde no se puede producir ninguna otra devolución de llamada (incluido MiniportShutdownEx). Para obtener más información sobre los estados del controlador de minipuerto, vea Miniport Adapter States and Operations.

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

Sintaxis

MINIPORT_HALT MiniportHalt;

void MiniportHalt(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_HALT_ACTION HaltAction
)
{...}

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] HaltAction

Motivo para detener el adaptador de minipuerto. Puede ser uno de los siguientes valores:

NdisHaltDeviceDisabled

NDIS detiene el adaptador de minipuerto en respuesta a un mensaje de eliminación de Plug and Play (PnP).

NdisHaltDeviceInstanceDeInitialized

NDIS detiene el adaptador de minipuerto en respuesta a un controlador intermedio que llama al Función NdisIMDeInitializeDeviceInstance .

NdisHaltDevicePoweredDown

NDIS detiene el adaptador de minipuerto porque el sistema va a estar en estado de suspensión.

NdisHaltDeviceSurpriseRemoved

El adaptador de miniporte ha sido sorprendido quitado y el hardware no está presente.

NdisHaltDeviceFailed

El adaptador de minipuerto se está quitando debido a un error de hardware. El controlador de minipuerto llamó a la función NdisMRemoveMiniport o un controlador de bus no enciende la NIC en la reanudación.

NdisHaltDeviceInitializationFailed

NDIS no pudo inicializar el adaptador de minipuerto por un motivo desconocido después de que la función MiniportInitializeEx se completara correctamente.

NdisHaltDeviceStopped

NDIS detiene el adaptador de minipuerto en respuesta a un mensaje de dispositivo de detención de PnP.

Valor devuelto

None

Observaciones

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

NDIS puede llamar a MiniportHaltEx en cualquier momento después de que la función MiniportInitializeEx de un controlador se devuelva correctamente. Si el controlador controla una NIC física, MiniportHaltEx debe detener la NIC. Si un controlador intermedio de NDIS llama al La función NdisIMDeInitializeDeviceInstance , NDIS llama a la función MiniportHaltEx para el dispositivo virtual del controlador.

MiniportHaltEx debe liberar todos los recursos asignados en MiniportInitializeEx para un dispositivo. MiniportHaltEx también libera cualquier otro recurso que el controlador haya asignado en operaciones posteriores para ese dispositivo. El conductor debe llamar a las funciones NdisXxx recíprocas con las que asignó originalmente los recursos. Como regla general, una función MiniportHaltEx debe llamar a las funciones NdisXxx recíprocas en orden inverso a las llamadas realizadas por el controlador desde MiniportInitializeEx.

Si una NIC genera interrupciones, la función MiniportHaltEx de un controlador de minipuerto puede ser adelantada por la función MiniportInterrupt del controlador hasta que llame a MiniportHaltEx a la función MiniportHaltEx . Devuelve la función NdisMDeregisterInterruptEx . La función MiniportHaltEx de este controlador debe deshabilitar las interrupciones y llamar a NdisMDeregisterInterruptEx lo antes posible. Tenga en cuenta que un controlador puede seguir recibiendo interrupciones hasta que Devuelve NdisMDeregisterInterruptEx . NdisMDeregisterInterruptEx no vuelve hasta que el controlador finaliza todos los DPC programados (consulte la función MiniportInterruptDPC para obtener más información).

Si el controlador tiene una función NetTimerCallback asociada a un objeto de temporizador que podría estar en la cola del temporizador del sistema, MiniportHaltEx debe llamar a la función NdisCancelTimerObject . Si se produce un error en NdisCancelTimerObject , el temporizador podría haberse activado. En este caso, el controlador debe esperar a que se complete la función del temporizador antes de que el controlador vuelva de MiniportHaltEx.

NDIS no llama a MiniportHaltEx si hay solicitudes de OID pendientes o solicitudes de envío. NDIS no envía más solicitudes para el dispositivo afectado después de que NDIS llame a MiniportHaltEx.

Si el controlador debe esperar a que se complete cualquier operación, MiniportHaltEx puede usar la función NdisWaitEvent o la función NdisMSleep .

NDIS llama a MiniportHaltEx en IRQL = PASSIVE_LEVEL.

Ejemplos

Para definir una función MiniportHaltEx , 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 MiniportHaltEx denominada "MyHaltEx", use el tipo MINIPORT_HALT como se muestra en este ejemplo de código:

MINIPORT_HALT MyHaltEx;

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

_Use_decl_annotations_
VOID
 MyHaltEx(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HALT_ACTION  HaltAction
    )
  {...}

El tipo de función MINIPORT_HALT 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_HALT 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 WlanAssociation, WlanConnectionRoaming, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Consulte también

Estados del adaptador de un controlador miniporte

Detener un adaptador de minipuerto

Estados y operaciones del adaptador de miniporte

Funciones de restablecimiento y detención del controlador de miniporte

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportReturnNetBufferLists

NdisCancelTimerObject

NdisIMDeInitializeDeviceInstance

NdisMDeregisterInterruptEx

NdisMRegisterMiniportDriver

NdisMRemoveMiniport

NdisMSleep

NdisWaitEvent

NetTimerCallback