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. |