Codici di errore in COM
Per indicare l'esito positivo o negativo, i metodi e le funzioni COM restituiscono un valore di tipo HRESULT. HRESULT è un intero a 32 bit. Il bit di ordine elevato del valore HRESULT segnala l'esito positivo o negativo. Zero (0) indica l'esito positivo e 1 indica un errore.
In questo modo vengono generati gli intervalli numerici seguenti:
- Codici di esito positivo: 0x0-0x7FFFFFFF.
- Codici di errore: 0x80000000-0xFFFFFFFF.
Un numero ridotto di metodi COM non restituisce un valore HRESULT . Ad esempio, i metodi AddRef e Release restituiscono valori lunghi senza segno. Tuttavia, ogni metodo COM che restituisce un codice di errore lo fa restituendo un valore HRESULT .
Per verificare se un metodo COM ha esito positivo, esaminare il bit di ordine elevato del valore HRESULT restituito. Le intestazioni di Windows SDK forniscono due macro che semplificano questa operazione: la macro SUCCEEDED e la macro FAILED . La macro SUCCEEDED restituisce TRUE se HRESULT è un codice di operazione riuscita e FALSE se si tratta di un codice di errore. Nell'esempio seguente viene verificato se CoInitializeEx ha esito positivo.
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
// The function succeeded.
}
else
{
// Handle the error.
}
A volte è più comodo testare la condizione inversa. La macro FAILED esegue l'opposto di SUCCEEDED. Restituisce TRUE per un codice di errore e FALSE per un codice di operazione riuscita.
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (FAILED(hr))
{
// Handle the error.
}
else
{
// The function succeeded.
}
Più avanti in questo modulo verranno esaminati alcuni consigli pratici su come strutturare il codice per gestire gli errori COM. (Vedere Gestione degli errori in COM.)
Prossima
Creazione di un oggetto in COM