Función KeRegisterBugCheckCallback (wdm.h)

La rutina KeRegisterBugCheckCallback registra una rutina BugCheckCallback , que se ejecuta cuando el sistema operativo emite una comprobación de errores.

Sintaxis

BOOLEAN KeRegisterBugCheckCallback(
  [out]          PKBUGCHECK_CALLBACK_RECORD  CallbackRecord,
  [in]           PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
  [in, optional] PVOID                       Buffer,
  [in]           ULONG                       Length,
  [in]           PUCHAR                      Component
);

Parámetros

[out] CallbackRecord

Puntero a un registro de devolución de llamada inicializado anteriormente por KeInitializeCallbackRecord, para el que el autor de la llamada proporciona almacenamiento no paginado.

[in] CallbackRoutine

Puntero a la función de devolución de llamada proporcionada por el controlador KBUGCHECK_CALLBACK_ROUTINE.

[in, optional] Buffer

Puntero a un búfer proporcionado por el autor de la llamada, que debe estar en memoria residente, como el grupo no paginado.

[in] Length

Especifica el tamaño en bytes del búfer asignado por el autor de la llamada.

[in] Component

Puntero a una cadena ANSI terminada en null que identifica al autor de la llamada. Esta cadena normalmente contiene el nombre del controlador de dispositivo o posiblemente de su dispositivo.

Valor devuelto

KeRegisterBugCheckCallback devuelve TRUE si la rutina proporcionada por el autor de la llamada se agrega correctamente al conjunto de devoluciones de llamada registradas de comprobación de errores; de lo contrario, devuelve FALSE.

Comentarios

La rutina KeRegisterBugCheckCallback registra una rutina BugCheckCallback, el tipo más sencillo de rutina de devolución de llamada de comprobación de errores.

Para registrar otros tipos de devoluciones de llamada de comprobación de errores, como las rutinas KbCallbackDumpIo y KbCallbackAddPages, use la rutina KeRegisterBugCheckReasonCallback en su lugar.

La rutina BugCheckCallback se ejecuta cuando el sistema emite una comprobación de errores. Un controlador puede usar la rutina para restablecer el dispositivo a un estado conocido. Para obtener más información, consulte BugCheckCallback.

Los controladores pueden usar la rutina KeDeregisterBugCheckCallback para quitar la devolución de llamada. Cualquier controlador que se pueda descargar debe quitar todas sus devoluciones de llamada en su rutina Unload .

La cadena Component se usa para identificar el controlador durante la depuración del volcado de memoria. Para mostrar los datos de volcado de memoria correspondientes a cualquier cadena de componente especificada, puede usar la extensión del depurador !bugdump . También es posible depurar la rutina de devolución de llamada de comprobación de errores. Para obtener información sobre los depuradores y las extensiones del depurador, vea Depuración de Windows.

Implementación

Para definir una rutina de devolución de llamada BugCheckCallback, 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 Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores.

Por ejemplo, para definir una rutina de devolución de llamada BugCheckCallback denominada MyBugCheckCallback, use el tipo de KBUGCHECK_CALLBACK_ROUTINE como se muestra en este ejemplo de código:

KBUGCHECK_CALLBACK_ROUTINE MyBugCheckCallback;

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

_Use_decl_annotations_
VOID
  MyBugCheckCallback(
    PVOID  Buffer,
    ULONG  Length
    )
  {
      // Function body
  }

El tipo de función KBUGCHECK_CALLBACK_ROUTINE 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 a la _Use_decl_annotations_ annotation 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 KBUGCHECK_CALLBACK_ROUTINE 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
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL Cualquier nivel

Consulte también

Escribir una rutina de devolución de llamada de comprobación de errores.

KeDeregisterBugCheckCallback

KeInitializeCallbackRecord

KeRegisterBugCheckReasonCallback