Funzione SetErrorMode (errhandlingapi.h)

Controlla se il sistema gestirà i tipi di errori gravi specificati o se il processo li gestirà.

Sintassi

UINT SetErrorMode(
  [in] UINT uMode
);

Parametri

[in] uMode

Modalità di errore del processo. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
0
Usare l'impostazione predefinita del sistema, ovvero visualizzare tutte le finestre di dialogo di errore.
SEM_FAILCRITICALERRORS
0x0001
Il sistema non visualizza la finestra di messaggio critical-error-handler. Al contrario, il sistema invia l'errore al processo chiamante.

È consigliabile che tutte le applicazioni chiamino la funzione SetErrorMode a livello di processo con un parametro di SEM_FAILCRITICALERRORS all'avvio. Ciò consente di evitare che le finestre di dialogo in modalità di errore vengano bloccate dall'applicazione.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
Il sistema corregge automaticamente gli errori di allineamento della memoria e li rende invisibili all'applicazione. Esegue questa operazione per il processo chiamante e per tutti i processi discendenti. Questa funzionalità è supportata solo da determinate architetture del processore. Per altre informazioni, vedere la sezione Osservazioni.

Dopo aver impostato questo valore per un processo, i tentativi successivi di cancellare il valore vengono ignorati.

SEM_NOGPFAULTERRORBOX
0x0002
Il sistema non visualizza la finestra di dialogo Segnalazione errori Windows.
SEM_NOOPENFILEERRORBOX
0x8000
La funzione OpenFile non visualizza una finestra di messaggio quando non riesce a trovare un file. Viene invece restituito l'errore al chiamante. Questa modalità di errore esegue l'override del flag OF_PROMPT .

Valore restituito

Il valore restituito è lo stato precedente dei flag di bit in modalità errore.

Commenti

Ogni processo ha una modalità di errore associata che indica al sistema in che modo l'applicazione risponderà a errori gravi. Un processo figlio eredita la modalità di errore del processo padre. Per recuperare la modalità di errore del processo, usare la funzione GetErrorMode .

Poiché la modalità di errore è impostata per l'intero processo, è necessario assicurarsi che le applicazioni multithreading non impostino flag diversi in modalità errore. In questo modo è possibile che la gestione degli errori non sia coerente.

Il sistema non rende visibili gli errori di allineamento a un'applicazione in tutte le architetture del processore. Pertanto, specificare SEM_NOALIGNMENTFAULTEXCEPT non è un errore in tali architetture, ma il sistema è libero di ignorare automaticamente la richiesta. Ciò significa che le sequenze di codice come le seguenti non sono sempre valide nei computer x86:

C++
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); 
fuOldErrorMode = SetErrorMode(0); 
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
Itanium: Un'applicazione deve chiamare in modo esplicito SetErrorMode con SEM_NOALIGNMENTFAULTEXCEPT per consentire al sistema di correggere automaticamente gli errori di allineamento. L'impostazione predefinita è che il sistema renda visibili gli errori di allineamento a un'applicazione.

Visual Studio 2005: Quando si dichiara un puntatore a una struttura che potrebbe non avere dati allineati, è possibile usare la parola chiave __unaligned per indicare che il tipo deve essere letto un byte alla volta. Per altre informazioni, vedere Allineamento dei dati di Windows.

Windows 7: I chiamanti devono preferire SetThreadErrorMode rispetto a SetErrorMode perché è meno dirompente rispetto al normale comportamento del sistema.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione errhandlingapi.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Funzioni di gestione degli errori

Modalità errore

GetErrorMode

SetThreadErrorMode