MINIPORT_UNLOAD función de devolución de llamada (ndis.h)
NDIS llama a la función MiniportDriverUnload de un controlador de miniporte para solicitar al controlador que libere los recursos antes de que el sistema complete una operación de descarga de controladores.
Sintaxis
MINIPORT_UNLOAD MiniportUnload;
void MiniportUnload(
[in] PDRIVER_OBJECT DriverObject
)
{...}
Parámetros
[in] DriverObject
Puntero a una estructura DRIVER_OBJECT que es el objeto de controlador del controlador.
Valor devuelto
None
Observaciones
Un controlador especifica el punto de entrada MiniportDriverUnload cuando llama al Función NdisMRegisterMiniportDriver .
El objeto de controlador asociado a un controlador de minipuerto NDIS especifica una rutina Unload . El sistema operativo llama a la rutina Unload cuando se han quitado todos los dispositivos que se han quitado los servicios de controlador de miniport. NDIS proporciona la rutina Unload para los controladores NDIS. NDIS llama a la función MiniportDriverUnload de un controlador de miniport desde la rutina Unload .
La funcionalidad de la rutina Unload es específica del controlador. Como regla general, MiniportDriverUnload debe deshacer las operaciones que se realizaron en la rutina DriverEntry del controlador.
Un controlador de minipuerto llama al Función NdisMDeregisterMiniportDriver de MiniportDriverUnload.
Además de NdisMDeregisterMiniportDriver, un controlador intermedio también llama al Función NdisDeregisterProtocolDriver para anular el registro de la interfaz de protocolo del controlador. MiniportDriverUnload también debe realizar las operaciones de limpieza necesarias, como desasignar cualquier recurso de interfaz de controlador de protocolo.
Si un controlador de minipuerto administra más de una instancia de dispositivo, como un controlador de equilibrio de carga, NDIS no llamará a MiniportDriverUnload hasta que NDIS llame a la función MiniportHaltEx una vez para cada instancia del dispositivo.
NDIS llama a MiniportDriverUnload en IRQL = PASSIVE_LEVEL.
Ejemplos
Para definir una función MiniportDriverUnload , 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 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 MiniportDriverUnload denominada "MyDriverUnload", use el tipo de MINIPORT_UNLOAD como se muestra en este ejemplo de código:
MINIPORT_UNLOAD MyDriverUnload;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyDriverUnload(
PDRIVER_OBJECT DriverObject
)
{...}
El tipo de función MINIPORT_UNLOAD 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_UNLOAD 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 |