Funzione KeRegisterBugCheckCallback (wdm.h)

La routine KeRegisterBugCheckCallback registra una routine BugCheckCallback , che viene eseguita quando il sistema operativo genera un controllo di bug.

Sintassi

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

Parametri

[out] CallbackRecord

Puntatore a un record di callback inizializzato in precedenza da KeInitializeCallbackRecord, per cui il chiamante fornisce archiviazione non con pagine.

[in] CallbackRoutine

Puntatore alla funzione di callback fornita dal driver KBUGCHECK_CALLBACK_ROUTINE.

[in, optional] Buffer

Puntatore a un buffer fornito dal chiamante, che deve essere in memoria residente, ad esempio pool non di pagina.

[in] Length

Specifica le dimensioni in byte del buffer allocato dal chiamante.

[in] Component

Puntatore a una stringa ANSI con terminazione null che identifica il chiamante. Questa stringa contiene in genere il nome del driver del dispositivo o eventualmente del dispositivo.

Valore restituito

KeRegisterBugCheckCallback restituisce TRUE se la routine fornita dal chiamante viene aggiunta correttamente al set di callback di controllo dei bug registrati; in caso contrario, restituisce FALSE.

Commenti

La routine KeRegisterBugCheckCallback registra una routine BugCheckCallback, il tipo più semplice di routine di callback di controllo bug.

Per registrare altri tipi di callback di controllo dei bug, ad esempio KbCallbackDumpIo e KbCallbackAddPages, usare invece la routine KeRegisterBugCheckReasonCallback .

La routine BugCheckCallback viene eseguita quando il sistema genera un controllo di bug. Un driver può usare la routine per reimpostare il dispositivo in uno stato noto. Per altre informazioni, vedere BugCheckCallback.

I driver possono usare la routine KeDeregisterBugCheckCallback per rimuovere il callback. Qualsiasi driver che può essere scaricato deve rimuovere tutti i callback nella routine di scaricamento .

La stringa Componente viene usata per identificare il driver durante il debug di dump di arresto anomalo. Per visualizzare i dati di dump di arresto anomalo corrispondenti a qualsiasi stringa componente specificata, è possibile usare l'estensione del debugger !bugdump . È anche possibile eseguire il debug della routine di callback del bug. Per informazioni sui debugger e sulle estensioni del debugger, vedere Debug di Windows.

Implementazione

Per definire una routine di callback BugCheckCallback, è prima necessario specificare una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione usando i tipi di funzione di callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori.

Ad esempio, per definire una routine di callback BugCheckCallback denominata MyBugCheckCallback, usare il tipo di KBUGCHECK_CALLBACK_ROUTINE come illustrato in questo esempio di codice:

KBUGCHECK_CALLBACK_ROUTINE MyBugCheckCallback;

Implementare quindi la routine di callback come indicato di seguito:

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

Il tipo di funzione KBUGCHECK_CALLBACK_ROUTINE è definito nel file di intestazione Wdm.h.

Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'oggetto _Use_decl_annotations_ annotation alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano usate le annotazioni applicate al tipo di funzione KBUGCHECK_CALLBACK_ROUTINE nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver WDM. Per informazioni su Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualsiasi livello

Vedi anche

Scrittura di una routine di controllo bug.

KeDeregisterBugCheckCallback

KeInitializeCallbackRecord

KeRegisterBugCheckReasonCallback