structure EXCEPTION_RECORD64 (winnt.h)

Décrit une exception.

Syntaxe

typedef struct _EXCEPTION_RECORD64 {
  DWORD   ExceptionCode;
  DWORD   ExceptionFlags;
  DWORD64 ExceptionRecord;
  DWORD64 ExceptionAddress;
  DWORD   NumberParameters;
  DWORD   __unusedAlignment;
  DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64;

Membres

ExceptionCode

Raison pour laquelle l’exception s’est produite. Il s’agit du code généré par une exception matérielle ou du code spécifié dans la fonction RaiseException pour une exception générée par logiciel. Les tableaux suivants décrivent les codes d’exception susceptibles de se produire en raison d’erreurs de programmation courantes.

Valeur Signification
EXCEPTION_ACCESS_VIOLATION
Le thread a essayé de lire ou d’écrire dans une adresse virtuelle pour laquelle il ne dispose pas de l’accès approprié.
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
Le thread a essayé d’accéder à un élément de tableau qui est hors limites et le matériel sous-jacent prend en charge la vérification des limites.
EXCEPTION_BREAKPOINT
Un point d’arrêt a été rencontré.
EXCEPTION_DATATYPE_MISALIGNMENT
Le thread a essayé de lire ou d’écrire des données mal alignées sur le matériel qui ne fournit pas d’alignement. Par exemple, les valeurs 16 bits doivent être alignées sur les limites de 2 octets ; Valeurs 32 bits sur les limites de 4 octets, et ainsi de suite.
EXCEPTION_FLT_DENORMAL_OPERAND
L’un des opérandes d’une opération à virgule flottante est dénormal. Une valeur dénormale est une valeur qui est trop petite pour être représentée sous la forme d’une valeur à virgule flottante standard.
EXCEPTION_FLT_DIVIDE_BY_ZERO
Le thread a essayé de diviser une valeur à virgule flottante par un diviseur à virgule flottante de zéro.
EXCEPTION_FLT_INEXACT_RESULT
Le résultat d’une opération à virgule flottante ne peut pas être représenté exactement comme une fraction décimale.
EXCEPTION_FLT_INVALID_OPERATION
Cette exception représente toute exception à virgule flottante non incluse dans cette liste.
EXCEPTION_FLT_OVERFLOW
L’exposant d’une opération à virgule flottante est supérieur à la magnitude autorisée par le type correspondant.
EXCEPTION_FLT_STACK_CHECK
La pile a débordé ou sous-débit à la suite d’une opération à virgule flottante.
EXCEPTION_FLT_UNDERFLOW
L’exposant d’une opération à virgule flottante est inférieur à la magnitude autorisée par le type correspondant.
EXCEPTION_ILLEGAL_INSTRUCTION
Le thread a essayé d’exécuter une instruction non valide.
EXCEPTION_IN_PAGE_ERROR
Le thread a essayé d’accéder à une page qui n’était pas présente et le système n’a pas pu charger la page. Par exemple, cette exception peut se produire si une connexion réseau est perdue lors de l’exécution d’un programme sur le réseau.
EXCEPTION_INT_DIVIDE_BY_ZERO
Le thread a essayé de diviser une valeur entière par un diviseur entier de zéro.
EXCEPTION_INT_OVERFLOW
Le résultat d’une opération entière a provoqué une exécution du bit le plus significatif du résultat.
EXCEPTION_INVALID_DISPOSITION
Un gestionnaire d’exceptions a retourné une disposition non valide au répartiteur d’exceptions. En principe, les programmeurs qui utilisent un langage de haut niveau comme C ne rencontrent jamais cette exception.
EXCEPTION_NONCONTINUABLE_EXCEPTION
Le thread a essayé de poursuivre l’exécution après qu’une exception non continue s’est produite.
EXCEPTION_PRIV_INSTRUCTION
Le thread a essayé d’exécuter une instruction dont l’opération n’est pas autorisée en mode machine actuel.
EXCEPTION_SINGLE_STEP
Une interruption de trace ou un autre mécanisme d’instruction unique signalent qu’une instruction a été exécutée.
EXCEPTION_STACK_OVERFLOW
Le thread a utilisé sa pile.
 

Un autre code d’exception est susceptible de se produire lors du débogage des processus de console. Elle ne se produit pas en raison d’une erreur de programmation. Le code d’exception DBG_CONTROL_C se produit lorsque CTRL+C est entré dans un processus de console qui gère les signaux CTRL+C et est en cours de débogage. Ce code d’exception n’est pas destiné à être géré par les applications. Il est déclenché uniquement pour le bénéfice du débogueur et est déclenché uniquement lorsqu’un débogueur est attaché au processus de console.

ExceptionFlags

Indicateurs d’exception. Ce membre peut être égal à zéro, indiquant une exception continuable ou EXCEPTION_NONCONTINUABLE indiquant une exception non continue. Toute tentative de poursuite de l’exécution après une exception non continu provoque l’exception EXCEPTION_NONCONTINUABLE_EXCEPTION .

ExceptionRecord

Pointeur vers une structure de EXCEPTION_RECORD associée. Les enregistrements d’exception peuvent être chaînés ensemble pour fournir des informations supplémentaires lorsque des exceptions imbriquées se produisent.

ExceptionAddress

Adresse à laquelle l’exception s’est produite.

NumberParameters

Nombre de paramètres associés à l’exception. Il s’agit du nombre d’éléments définis dans le tableau ExceptionInformation .

__unusedAlignment

ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]

Tableau d’arguments supplémentaires qui décrivent l’exception. La fonction RaiseException peut spécifier ce tableau d’arguments. Pour la plupart des codes d’exception, les éléments de tableau ne sont pas définis. Le tableau suivant décrit les codes d’exception dont les éléments de tableau sont définis.

Code d'exception Signification
EXCEPTION_ACCESS_VIOLATION
Le premier élément du tableau contient un indicateur de lecture-écriture qui indique le type d’opération à l’origine de la violation d’accès. Si cette valeur est égale à zéro, le thread a tenté de lire les données inaccessibles. Si cette valeur est 1, le thread a tenté d’écrire dans une adresse inaccessible.

Si cette valeur est 8, le thread provoque une violation de la prévention de l’exécution des données (DEP) en mode utilisateur.

Le deuxième élément de tableau spécifie l’adresse virtuelle des données inaccessibles.

EXCEPTION_IN_PAGE_ERROR
Le premier élément du tableau contient un indicateur de lecture-écriture qui indique le type d’opération à l’origine de la violation d’accès. Si cette valeur est égale à zéro, le thread a tenté de lire les données inaccessibles. Si cette valeur est 1, le thread a tenté d’écrire dans une adresse inaccessible.

Si cette valeur est 8, le thread provoque une violation de la prévention de l’exécution des données (DEP) en mode utilisateur.

Le deuxième élément de tableau spécifie l’adresse virtuelle des données inaccessibles.

Le troisième élément de tableau spécifie le code NTSTATUS sous-jacent qui a entraîné l’exception.

Remarques

Pour permettre à un débogueur de déboguer une cible qui s’exécute sur une autre architecture (32 bits ou 64 bits), utilisez l’une des formes explicites de cette structure.

typedef struct _EXCEPTION_RECORD32 {
    DWORD    ExceptionCode;
    DWORD ExceptionFlags;
    DWORD ExceptionRecord;
    DWORD ExceptionAddress;
    DWORD NumberParameters;
    DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD32, *PEXCEPTION_RECORD32;

typedef struct _EXCEPTION_RECORD64 {
    DWORD    ExceptionCode;
    DWORD ExceptionFlags;
    DWORD64 ExceptionRecord;
    DWORD64 ExceptionAddress;
    DWORD NumberParameters;
    DWORD __unusedAlignment;
    DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64;

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
En-tête winnt.h (inclure Windows.h)

Voir aussi

EXCEPTION_DEBUG_INFO

EXCEPTION_POINTERS

GetExceptionInformation

RaiseException

UnhandledExceptionFilter