Sdílet prostřednictvím


Kódy chyb v modelu COM

Pro označení úspěchu nebo selhání vrátí metody a funkce MODELU COM hodnotu typu HRESULT. HRESULT je 32bitové celé číslo. Vysoce uspořádaný bit HRESULT signalizuje úspěch nebo selhání. Nula (0) označuje úspěch a 1 značí selhání.

Výsledkem jsou následující číselné rozsahy:

  • Kódy úspěchu: 0x0–0x7FFFFFFF.
  • Kódy chyb: 0x80000000–0xFFFFFFFF.

Malý počet metod MODELU COM nevrací hodnotu HRESULT. Například metody AddRef a Release vracejí dlouhé hodnoty bez znaménka. Každá COM metoda, která vrací kód chyby, to provede vrácením hodnoty HRESULT.

Chcete-li zjistit, zda metoda COM proběhla úspěšně, zkontrolujte nejvyšší bit vráceného HRESULT. Hlavičky sady Windows SDK poskytují dvě makra, která usnadňují práci: makro SUCCEEDED a makro FAILED. Makro SUCCEEDED vrátí TRUE, pokud je HRESULT kód úspěchu, a FALSE, pokud se jedná o kód chyby. Následující příklad zkontroluje, zda CoInitializeEx proběhne úspěšně.

HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | 
    COINIT_DISABLE_OLE1DDE);

if (SUCCEEDED(hr))
{
    // The function succeeded.
}
else
{
    // Handle the error.
}

Někdy je vhodnější otestovat inverzní podmínku. Makro SELHALO dělá opak USPĚLO. Vrátí TRUE pro kód chyby a FALSE pro kód úspěchu.

HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | 
    COINIT_DISABLE_OLE1DDE);

if (FAILED(hr))
{
    // Handle the error.
}
else
{
    // The function succeeded.
}

Později v tomto modulu se podíváme na několik praktických rad, jak strukturovat kód pro zpracování chyb modelu COM. (Viz nakládání s chybami v COM.)

Další

Vytvoření objektu v modelu COM