Eccezioni hardware
La maggior parte delle eccezioni standard riconosciuti dal sistema operativo alcune eccezioni hardware-definite.Le finestre riconosce alcune eccezioni di basso livello software, ma questi sono generalmente ottimale gestiti dal sistema operativo.
Le finestre esegue il mapping degli errori hardware di processori diversi per i codici di eccezione in questa sezione.In alcuni casi, un processore possibile generare solo un sottoinsieme di queste eccezioni.Le finestre pre-elaborato informazioni sull'eccezione e genera il codice appropriato di eccezione.
Le eccezioni hardware riconosciute da windows sono riepilogate nella tabella seguente:
codice di eccezione |
causa di eccezione |
---|---|
STATUS_ACCESS_VIOLATION |
Lettura o scrittura a una posizione di memoria inaccessibile. |
STATUS_BREAKPOINT |
Si del punto di interruzione hardware-definito; utilizzato solo dai debugger. |
STATUS_DATATYPE_MISALIGNMENT |
Lettura o scrittura ai dati in un indirizzo che non corretta allineato; ad esempio, le entità a 16 bit devono essere allineati su limiti di 2 byte.(Non applicabile a Intel 80x86 processori.) |
STATUS_FLOAT_DIVIDE_BY_ZERO |
Divisione del tipo a virgola mobile compresi 0,0. |
STATUS_FLOAT_OVERFLOW |
Superare esponendo positivo massimo di tipo a virgola mobile. |
STATUS_FLOAT_UNDERFLOW |
L'overflow di grandezza esponente negativo minore di tipo a virgola mobile. |
STATUS_FLOATING_RESEVERED_OPERAND |
Utilizzando un formato a virgola mobile riservato (utilizzo non valido del formato). |
STATUS_ILLEGAL_INSTRUCTION |
Tentare di eseguire un codice di istruzione non definito dal processore. |
STATUS_PRIVILEGED_INSTRUCTION |
Eseguendo un'istruzione non consentita in modalità del computer corrente. |
STATUS_INTEGER_DIVIDE_BY_ZERO |
Divisione del tipo integer da 0. |
STATUS_INTEGER_OVERFLOW |
Tenta un'operazione che supera l'intervallo integer. |
STATUS_SINGLE_STEP |
Eseguire un'istruzione in modalità di istruzione singola, utilizzato solo dai debugger. |
Molte delle eccezioni presenti nella tabella precedente sono progettate per essere gestite da debugger, dal sistema operativo, o altro codice di basso livello.Ad eccezione degli errori Integer e a virgola mobile, il codice non deve gestire tali errori.Pertanto, è necessario in genere utilizzare il filtro gestione delle eccezioni per ignorare le eccezioni (valutare a 0).In caso contrario, è possibile impedire che i meccanismi di livello più basso di rispondere in modo appropriato.È possibile, tuttavia, prendere le precauzioni appropriate e l'impatto potenziale di questi errori di basso livello da gestori di terminazione di scrittura.