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 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 de controlador del controlador.

[in, optional] Context

Puntero proporcionado por el autor de la llamada a 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 Reinitialize , incluida la llamada actual.

Valor devuelto

None

Observaciones

Para poner en cola una rutina reinicializar para su ejecución, la rutina DriverEntry de un controlador debe llamar a IoRegisterDriverReinitialization o IoRegisterBootDriverReinitialization. La rutina Reinitialize también puede llamar a IoRegisterDriverReinitialization , lo que hace que se vuelva a poner en cola la rutina. 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 DriverEntry y DriverEntry debe devolver STATUS_SUCCESS.

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

Ejemplos

Para definir una rutina de devolución de llamada reinicializar , 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 Code Analysis for Drivers, Static Driver Verifier (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 rutina de devolución de llamada Reinitialize denominada MyReinitialize, use el tipo DRIVER_REINITIALIZE 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 más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación a la _Use_decl_annotations_ definición de la función. La _Use_decl_annotations_ anotación 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 roles de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado ntddk.h (incluya Ntddk.h, Ntifs.h)
IRQL Se llama en PASSIVE_LEVEL.