Partager via


Fonction IoRaiseInformationalHardError (ntddk.h)

La routine IoRaiseInformationalHardError envoie une boîte de dialogue à l’utilisateur, un avertissement concernant une erreur d’E/S d’appareil qui indique la raison de l’échec d’une demande d’E/S utilisateur.

Syntaxe

BOOLEAN IoRaiseInformationalHardError(
  [in]           NTSTATUS        ErrorStatus,
  [in, optional] PUNICODE_STRING String,
  [in, optional] PKTHREAD        Thread
);

Paramètres

[in] ErrorStatus

Code de status d’erreur (IO_ERR_XXX).

[in, optional] String

Pointeur vers une chaîne Unicode, qui fournit des informations supplémentaires sur l’erreur. Certains codes de status NT nécessitent un paramètre de chaîne, tel qu’un nom de fichier ou de répertoire. Si la valeur ErrorStatus spécifiée ne nécessite pas de paramètre de chaîne, définissez String sur NULL.

[in, optional] Thread

Pointeur vers le thread dont l’IRP a échoué en raison de l’erreur spécifiée par le paramètre ErrorStatus .

Valeur retournée

IoRaiseInformationalHardError retourne TRUE si la boîte de dialogue a été correctement mise en file d’attente. Cette routine retourne FALSE si les boîtes de dialogue sont désactivées pour Thread, si une allocation de pool a échoué, si un trop grand nombre de boîtes de dialogue sont déjà mises en file d’attente ou si une boîte de dialogue équivalente est déjà en attente d’une réponse de l’utilisateur (par exemple, en attendant que l’utilisateur appuie sur RETOUR).

Remarques

IoRaiseInformationalHardError prend une valeur d’erreur NT définie par le système comme paramètre. Les enregistreurs de pilotes peuvent utiliser les API du journal des événements pour communiquer des chaînes d’événements définies par le pilote à l’utilisateur.

IoRaiseInformationalHardError se comporte comme suit :

  • Si la valeur ErrorStatus fournie par l’appelant n’est pas définie dans le fichier d’en-tête Ntstatus.h, la boîte de dialogue affiche toujours le texte « Erreur matérielle inconnue », quelle que soit la valeur du paramètre String .
  • Si la valeur ErrorStatus fournie par l’appelant est définie dans le fichier d’en-tête Ntstatus.h, la boîte de dialogue affiche le texte dans la chaîne MessageText correspondante dans Ntstatus.h, quelle que soit la valeur du paramètre String .
  • Si le paramètre Thread spécifie un thread qui s’exécute dans le contexte d’une application, le texte affiché dans la boîte de dialogue est « ApplicationName.exe - Erreur système ».
  • Si le paramètre Thread a la valeur NULL ou s’il spécifie un thread qui s’exécute dans un contexte système arbitraire, le texte affiché dans la boîte de dialogue est « Processus système - Erreur système ». En outre, si la valeur ErrorStatus est définie dans Ntstatus.h, la chaîne MessageText correspondante est écrite dans le journal des événements.
Si un appel précédent à la routine IoSetThreadHardErrorMode a désactivé les erreurs matérielles pour le thread spécifié, IoRaiseInformationalHardError retourne FALSE.

À compter de Windows Vista, si la routine est appelée à partir d’un thread dans la session 0 (c’est-à-dire à partir d’un thread système), aucune boîte de dialogue n’apparaît lorsque la routine réussit et retourne TRUE.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête ntddk.h (incluez Ntddk.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), IrqlIoApcLte(wdm)

Voir aussi

IoSetHardErrorOrVerifyDevice

IoSetThreadHardErrorMode

PsGetCurrentThread