Compartir a través de


DRIVER_UNLOAD función de devolución de llamada (wdm.h)

La rutina Descargar realiza las operaciones necesarias antes de que el sistema descargue el controlador.

Sintaxis

DRIVER_UNLOAD DriverUnload;

void DriverUnload(
  [in] _DRIVER_OBJECT *DriverObject
)
{...}

Parámetros

[in] DriverObject

Puntero proporcionado por el autor de la llamada a una estructura de DRIVER_OBJECT. Este es el objeto driver del controlador.

Valor devuelto

Ninguno

Observaciones

La rutina De descarga de de un controlador se ejecuta en un contexto de subproceso del sistema en IRQL = PASSIVE_LEVEL.

La rutina Descarga es necesaria para los controladores WDM y opcional para los controladores que no son WDM. Una rutina de descarga de controladores, si se proporciona, debe denominarse XxxDescargar, donde Xxx es un prefijo específico del controlador. La rutina del controlador DriverEntry debe almacenar la dirección del Descargar rutina en DriverObject->DriverUnload. (Si no se proporciona ninguna rutina, este puntero debe ser NULL).

Para obtener información detallada sobre cómo implementar la rutina de descarga de de un controlador, consulte Escritura de una rutina de descarga.

Ejemplos

Para definir una Rutina de devolución de llamada, primero debe proporcionar una declaración de función que identifique el tipo de rutina de devolución de llamada que va a definir. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada 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 un Unaload rutina de devolución de llamada denominada MyUnload, use el tipo DRIVER_UNLOAD tal como se muestra en este ejemplo de código:

DRIVER_UNLOAD MyUnload;

A continuación, implemente la rutina de devolución de llamada de la siguiente manera:

_Use_decl_annotations_
VOID 
  MyUnload(
    struct _DRIVER_OBJECT  *DriverObject
    )
  {
      // Function body
  }

El tipo de función DRIVER_UNLOAD se define en el archivo de encabezado Wdm.h. Para identificar con mayor 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 DRIVER_UNLOAD en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de rol de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
irQL Se llama en PASSIVE_LEVEL.