Compartir a través de


DRIVER_REINITIALIZE función de devolución de llamada (ntddk.h)

La rutina reinicializar continúa la inicialización del controlador y del dispositivo después de que vuelva la rutina de DriverEntry del controlador.

Sintaxis

DRIVER_REINITIALIZE DriverReinitialize;

void DriverReinitialize(
  [in]           _DRIVER_OBJECT *DriverObject,
  [in, optional] PVOID Context,
  [in]           ULONG Count
)
{...}

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.

[in, optional] Context

Puntero proporcionado por el autor de la llamada a la información de contexto, especificada en una llamada anterior a ioRegisterDriverReinitialization o IoRegisterBootDriverReinitialization.

[in] Count

Se ha llamado al valor proporcionado por el autor de la llamada que representa el número de veces que se ha llamado a la rutina reinicializar, incluida la llamada actual.

Valor devuelto

Ninguno

Observaciones

Para poner en cola una rutina de reinicializar para su ejecución, la rutina de DriverEntry de un controlador debe llamar a ioRegisterDriverReinitialization o IoRegisterBootDriverReinitialization. La rutina Reinicializar también puede llamar a ioRegisterDriverReinitialization, lo que hace que la rutina se vuelva a poner en cola. Esta puesta en cola puede producirse varias veces y el parámetro Count de la rutina indica el número de veces que se ha llamado. La primera llamada a ioRegisterDriverReinitialization debe realizarse desde DriverEntryy driverEntry debe devolver STATUS_SUCCESS.

Para obtener más información sobre cómo implementar una rutina de reinicializar, vea Escribir una rutina de reinicialización.

Ejemplos

Para definir un reinicializar 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 está definiendo. 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 Reinicializar rutina de devolución de llamada denominada MyReinitialize, use el tipo DRIVER_REINITIALIZE tal como se muestra en este ejemplo de código:

DRIVER_REINITIALIZE MyReinitialize;

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

_Use_decl_annotations_
VOID
  MyReinitialize(
    struct _DRIVER_OBJECT  *DriverObject,
    PVOID  Context,
    ULONG  Count
    )
  {
      // Function body
  }

El tipo de función DRIVER_REINITIALIZE 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_REINITIALIZE 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 ntddk.h (incluya Ntddk.h, Ntifs.h)
irQL Se llama en PASSIVE_LEVEL.