Condividi tramite


Funzione SetErrorMode (errhandlingapi.h)

Controlla se il sistema o il processo gestisce i tipi di errore gravi specificati.

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, che visualizza tutte le finestre di dialogo di errore.
SEM_FAILCRITICALERRORS
0x0001
Il sistema non visualizza la finestra di messaggio critical-error-handler. Il sistema invia invece 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à 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 successivi tentativi di cancellare il valore vengono ignorati.

SEM_NOGPFAULTERRORBOX
0x0002
Il sistema non richiama Segnalazione errori Windows. Per disabilitare l'interfaccia utente segnalazione errori Windows, chiamare WerSetFlags con il flag WER_FAULT_REPORTING_NO_UI.
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.

Osservazioni

Ogni processo ha una modalità di errore associata che indica al sistema in che modo l'applicazione risponderà a gravi errori. 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 multithread non impostino flag diversi in modalità errore. In questo modo può verificarsi una gestione degli errori incoerente.

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 è per il sistema per rendere 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: chiamanti devono favorire SetThreadErrorModeSetErrorMode poiché è meno problematico per il normale comportamento del sistema.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [app desktop | App UWP]
server minimo supportato Windows Server 2003 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione errhandlingapi.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

funzioni di gestione degli errori

modalità errore

GetErrorMode

SetThreadErrorMode