Struktura kódů chyb modelu COM
Následující obrázek znázorňuje formát HRESULT (nebo SCODE); čísla označují pozice bitů:
Bit s vysokým pořadím v HRESULT nebo SCODE označuje, jestli vrácená hodnota představuje úspěch nebo selhání. Pokud je hodnota nastavená na 0, SEVERITY_SUCCESS, hodnota označuje úspěch. Pokud je nastavená hodnota 1, SEVERITY_ERROR značí selhání.
Bity R, C, N a r jsou rezervované.
Pole zařízení označuje systémovou službu odpovědnou za chybu. Společnost Microsoft přiděluje nové kódy zařízení, jakmile budou nezbytné. Většina kódů SCODE a hodnot HRESULT se značkou a nastavuje pole příslušnosti na FACILITY_ITF, což označuje chybu metody rozhraní.
Běžná pole zařízení jsou popsaná v následující tabulce.
Pole zařízení | Hodnota | Popis |
---|---|---|
DISPEČINK ZAŘÍZENÍ |
2 |
V případě chyb rozhraní IDispatch pozdní vazby. |
FACILITY_ITF |
4 |
U většiny stavových kódů vrácených metodami rozhraní. Skutečný význam chyby je definován rozhraním. To znamená, že dvě HRESULTs přesně stejnou 32bitovou hodnotou vrácenou ze dvou různých rozhraní mohou mít různé významy. |
FACILITY_NULL |
0 |
Pro široce použitelné běžné stavové kódy, jako jsou S_OK. |
FACILITY_RPC |
1 |
Stavové kódy vrácené ze vzdálených volání procedur. |
SKLADOVACÍ ZAŘÍZENÍ |
3 |
Pro stavové kódy vrácené z volání metod IStorage nebo IStream týkajících se strukturovaného úložiště. Stavové kódy, jejichž kód (nižší 16 bitů) je v rozsahu kódů chyb MS-DOS (tj. méně než 256) mají stejný význam jako odpovídající MS-DOS chyba. |
FACILITY_WIN32 |
7 |
Slouží k poskytnutí způsobu zpracování kódů chyb z funkcí v rozhraní API systému Windows jako HRESULT. Kódy chyb v 16bitovém rozhraní OLE, které duplikovaly kódy systémových chyb, byly také změněny na FACILITY_WIN32. |
Zařízení pro Windows |
8 |
Používá se pro další kódy chyb z rozhraní definovaných Microsoftem. |
Pole kódu je jedinečné číslo, které je přiřazeno k reprezentaci chyby nebo upozornění.
Podle konvence mají hodnoty HRESULT obecně názvy v následujícím formátu: Facility_Závažnost_Důvod.
zařízení je název zařízení nebo jiný rozlišující identifikátor; závažnosti je jedno písmeno, S nebo E, které označuje, jestli volání funkce proběhlo úspěšně (S), nebo jestli došlo k chybě (E); a důvod je identifikátor, který popisuje význam kódu. Například stavový kód STG_E_FILENOTFOUND indikuje, že došlo k chybě související s úložištěm; požadovaný soubor neexistuje. Stavové kódy z FACILITY_NULL nezahrnují předponu zařízení_.
Kódy chyb jsou definovány v kontextu implementace rozhraní. Po definování nelze kódy úspěchu změnit ani přidat nové kódy úspěchu. Nové kódy selhání je však možné zapsat. Společnost Microsoft si vyhrazuje právo definovat nové kódy selhání (ale ne kódy úspěchu) pro rozhraní popsaná v FACILITY_ITF nebo v nových zařízeních.
Související témata
-
Protokoly Windows: HRESULT