MINIPORT_SHUTDOWN función de devolución de llamada (ndis.h)
NDIS llama a la función MiniportShutdownEx del controlador de miniporte cuando el sistema se apaga. Esta función coloca el miniporte en el estado Shutdown, donde no se puede producir ninguna otra devolución de llamada (incluido MiniportHaltEx). Para obtener más información sobre los estados del controlador de minipuerto, vea Miniport Adapter States and Operations.
MINIPORT_SHUTDOWN MiniportShutdown;
void MiniportShutdown(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] NDIS_SHUTDOWN_ACTION ShutdownAction
)
{...}
[in] MiniportAdapterContext
Identificador de un área de contexto que el controlador de minipuerto asignó en su función MiniportInitializeEx . El controlador usa este área de contexto para mantener la información de estado de un adaptador de minipuerto.
[in] ShutdownAction
Motivo por el que NDIS llamó a la función shutdown. Valores válidos son:
Indica que NDIS se llama MiniportShutdownEx porque el sistema se apaga.
Indica que NDIS se llama MiniportShutdownEx debido a un error del sistema.
None
Un controlador especifica el punto de entrada MiniportShutdownEx cuando llama al Función NdisMRegisterMiniportDriver .
MiniportShutdownEx restaura el adaptador de minipuerto a un estado inicial conocido (el estado antes de NDIS llamó a la función MiniportInitializeEx del controlador de minipuerto para el adaptador de miniport). Esto garantiza que el adaptador de minipuerto se encuentra en un estado conocido y listo para reinicializarse cuando se reinicia el equipo después de que se produzca un apagado del sistema por cualquier motivo, incluido un error del sistema irrecuperable.
MiniportShutdownEx puede leer o escribir en puertos de E/S, espacio de E/S de dispositivo asignado a memoria o espacio de configuración específico del bus llamando a la función NdisMGetBusData o NdisMSetBusData para deshabilitar un motor DMA, deshabilitar interrupciones o restablecer el hardware a un estado conocido para que el hardware se pueda reiniciar de forma segura.
Si NDIS llama a MiniportShutdownEx debido a un error irrecuperable, el parámetro ShutdownAction se establece en NdisShutdownBugCheck y MiniportShutdownEx se ejecuta en un IRQL alto. En este caso, el controlador de minipuerto no debe llamar a ninguna función NdisXxx , excepto las funciones que se pueden llamar en cualquier IRQL.
Si NDIS llama a MiniportShutdownEx debido a un apagado iniciado por el usuario, MiniportShutdownEx se ejecuta en IRQL = PASSIVE_LEVEL y el controlador de minipuerto puede llamar a otras funciones de NdisXxx .
Si NDIS llama a MiniportShutdownEx debido a un error irrecuperable, el parámetro ShutdownAction se establece en NdisShutdownBugCheck y MiniportShutdownEx se ejecuta en un IRQL alto. En este caso, el controlador de minipuerto no debe llamar a ninguna función NdisXxx , excepto las funciones que se pueden llamar en cualquier IRQL. A partir de miniportes NDIS 6.30, NDIS no llama a MiniportShutdownEx durante un BugCheck a menos que la miniporte proporcione la marca NDIS_MINIPORT_ATTRIBUTES_REGISTER_BUGCHECK_CALLBACK en sus atributos de registro del adaptador.
Si el valor de ShutdownAction es NdisShutdownPowerOff, el controlador de minipuerto puede liberar opcionalmente sus recursos. Sin embargo, esto no es necesario ni se recomienda, porque el apagado del sistema hace que no sea necesario.
Si el valor de ShutdownAction es NdisShutdownBugCheck, el controlador de miniporte no debe liberar sus recursos.
Por ejemplo, para definir una función MiniportShutdownEx denominada "MyShutdownEx", use el tipo de MINIPORT_SHUTDOWN como se muestra en este ejemplo de código:
MINIPORT_SHUTDOWN MyShutdownEx;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyShutdownEx(
NDIS_HANDLE MiniportAdapterContext,
NDIS_SHUTDOWN_ACTION ShutdownAction
)
{...}
El tipo de función MINIPORT_SHUTDOWN 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_SHUTDOWN 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.
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 | Consulte la sección Comentarios. |
Estados del adaptador de un controlador miniporte
Apagado del adaptador de miniporte