Struttura dei codici di errore COM
La figura seguente mostra il formato di un HRESULT (o SCODE); i numeri indicano posizioni di bit:
Il bit di ordine elevato in HRESULT o SCODE indica se il valore restituito rappresenta l'esito positivo o negativo. Se impostato su 0, edizione StandardVERITY_SUCCESS, il valore indica l'esito positivo. Se impostato su 1, edizione StandardVERITY_ERROR indica un errore.
I bit R, C, N e r sono riservati.
Il campo della struttura indica il servizio di sistema responsabile dell'errore. Microsoft alloca nuovi codici di funzionalità man mano che diventano necessari. La maggior parte dei valori SCODE e HRESULT imposta il campo della struttura su FACILITY_ITF, a indicare un errore del metodo di interfaccia.
I campi comuni della struttura sono descritti nella tabella seguente.
Campo struttura | Valore | Descrizione |
---|---|---|
FACILITY_DISPATCH |
2 |
Per errori di interfaccia IDispatch di associazione tardiva . |
FACILITY_ITF |
4 |
Per la maggior parte dei codici di stato restituiti dai metodi di interfaccia. Il significato effettivo dell'errore è definito dall'interfaccia . Ovvero, due HRESULTcon esattamente lo stesso valore a 32 bit restituito da due interfacce diverse potrebbero avere significati diversi. |
FACILITY_NULL |
0 |
Per i codici di stato comuni applicabili a livello generale, ad esempio S_OK. |
FACILITY_RPC |
1 |
Per i codici di stato restituiti dalle chiamate di procedura remota. |
FACILITY_STORAGE |
3 |
Per i codici di stato restituiti dalle chiamate al metodo I Archiviazione o IStream relative all'archiviazione strutturata. Codici di stato il cui valore di codice (inferiore a 16 bit) si trova nell'intervallo di codici di errore MS-DOS (ovvero minori di 256) hanno lo stesso significato dell'errore MS-DOS corrispondente. |
FACILITY_WIN32 |
7 |
Usato per fornire un mezzo per gestire i codici di errore dalle funzioni nell'API Di Windows come HRESULT. Anche i codici di errore in OLE a 16 bit che hanno duplicato i codici di errore di sistema sono stati modificati in FACILITY_WIN32. |
FACILITY_WINDOWS |
8 |
Usato per codici di errore aggiuntivi dalle interfacce definite da Microsoft. |
Il campo del codice è un numero univoco assegnato per rappresentare l'errore o l'avviso.
Per convenzione, i valori HRESULT hanno in genere nomi nel formato seguente: Facility_Severity_Reason.
La struttura è il nome della struttura o un altro identificatore distintivo; La gravità è una singola lettera, S o E, che indica se la chiamata di funzione ha avuto esito positivo (S) o ha generato un errore (E) e Reason è un identificatore che descrive il significato del codice. Ad esempio, il codice di stato STG_E_FILENOTFOUND indica che si è verificato un errore correlato all'archiviazione; in particolare, un file richiesto non esiste. I codici di stato di FACILITY_NULL omettono il prefisso Facility_.
I codici di errore vengono definiti all'interno del contesto di un'implementazione dell'interfaccia. Una volta definiti, i codici di operazione riuscita non possono essere modificati o aggiunti nuovi codici di operazione riuscita. È tuttavia possibile scrivere nuovi codici di errore. Microsoft si riserva il diritto di definire nuovi codici di errore (ma non codici di esito positivo) per le interfacce descritte in FACILITY_ITF o in nuove strutture.