Compartir a través de


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

NDIS llama a la función MiniportHalt Ex de un 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 (incluida MiniportShutdownEx). Para obtener más información sobre los estados del controlador de miniporte, consulte Miniport Adapter States and Operations.

Nota Debe declarar la función mediante el tipo de 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 miniporta asignó en su función MiniportInitializeEx. El controlador de miniporte usa este área de contexto para mantener la información de estado de un adaptador de miniporte.

[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 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 se ha quitado sorpresa 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 de NdisMRemoveMiniport o un controlador de autobús no ha encendido la NIC en el currículum.

NdisHaltDeviceInitializationFailed

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

NdisHaltDeviceStopped

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

Valor devuelto

Ninguno

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 NDIS llama a función NdisIMDeInitializeDeviceInstance, NDIS llama a la función MiniportHaltEx para el dispositivo virtual del controlador.

MiniportHaltEx deben liberar todos los recursos asignados en MiniportInitializeEx para un dispositivo. MiniportHaltEx también libera los demás recursos asignados por el controlador en operaciones posteriores para ese dispositivo. El controlador debe llamar a las funciones de NdisXxx con las que asignó originalmente los recursos. Como regla general, una función MiniportHaltEx debe llamar a las funciones de NdisXxx en orden inverso a las llamadas realizadas por el controlador desde MiniportInitializeEx.

Si una NIC genera interrupciones, la función MiniportHaltEx del controlador puede ser adelantada por la función MiniportInterrupt del controlador hasta que el MiniportHaltEx llame a la función función NdisMDeregisterInterruptEx devuelve. Este tipo de controlador función de MiniportHaltEx 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 devuelve hasta que el controlador finalice todos los DPC programados (consulte la función MiniportInterruptDPC para obtener más información).

Si el controlador tiene una función NetTimerCallback que está 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 NdisCancelTimerObject produce un error, el temporizador podría haber desencadenado. 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 las llamadas NDIS 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 de

Para definir una función miniportHaltEx, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran 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 tal 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, vea 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, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Windows
encabezado de 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 de miniportar

detener un adaptador de miniportar

de operaciones y estados del adaptador de miniporte

Miniport Driver Reset and Halt Functions

MiniportInitializeEx

MiniportInterrupt

miniportInterruptDPC

miniportReturnNetBufferLists

NdisCancelTimerObject

NdisIMDeInitializeDeviceInstance

NdisMDeregisterInterruptEx

NdisMRegisterMiniportDriver

NdisMRemoveMiniport

NdisMSleep

NdisWaitEvent

NetTimerCallback