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