A COM-hibakódok felépítése
Az alábbi ábrán egy HRESULT (vagy SCODE) formátuma látható; a számok bitpozíciót jelölnek:
A HRESULT vagy SCODE magasrendű bitje azt jelzi, hogy a visszatérési érték sikeres vagy sikertelen. Ha 0 értékre van állítva, SEVERITY_SUCCESS az érték sikerességet jelez. Ha az 1 értékre van állítva, SEVERITY_ERROR hibát jelez.
Az R, C, N és r bitek fenntartva vannak.
A létesítmény mező a hibáért felelős rendszerszolgáltatást jelzi. A Microsoft szükség esetén új létesítménykódokat rendel hozzá. A legtöbb SCODE és HRESULT érték a létesítménymezőt FACILITY_ITF értékre állítja, amely interfészmetódus-hibát jelez.
A gyakori létesítménymezőket az alábbi táblázat ismerteti.
Létesítménymező | Érték | Leírás |
---|---|---|
LÉTESÍTMÉNY_KEZELŐ |
2 |
Késői kötésű IDispatch interfész hibák esetében. |
FACILITY_ITF |
4 |
A felületi metódusokból visszaadott legtöbb állapotkód esetében. A hiba tényleges jelentését az interfész határozza meg. Ez azt jelenti, hogy két különböző interfészből visszaadott két HRESULT, amelyek pontosan ugyanazzal a 32 bites értékkel rendelkeznek, eltérő jelentést hordozhat. |
LÉTESÍTMÉNY_NULL |
0 |
Általánosan alkalmazható általános állapotkódok, például S_OK. |
FACILITY_RPC |
1 |
Távoli eljáráshívásokból visszaadott állapotkódok esetén. |
LÉTESÍTMÉNY_TÁROLÓ |
3 |
Az IStorage vagy IStream metódushívásokból visszaadott állapotkódok esetén a strukturált tároláshoz kapcsolódó metódushívások. Azok az állapotkódok, amelyek kódszáma (kisebb 16 bit) MS-DOS hibakódok tartományában van (azaz 256-nál kisebb) ugyanazt a jelentést adja, mint a megfelelő MS-DOS hiba. |
FACILITY_WIN32 |
7 |
A Windows API függvényeiből származó hibakódok kezelésére szolgál mint HRESULT. A 16 bites OLE hibakódok, amelyek megegyeznek a rendszerhibakódokkal, szintén FACILITY_WIN32-re lettek módosítva. |
LÉTESÍTMÉNY_ABLAKOK |
8 |
A Microsoft által definiált felületek további hibakódjaihoz használható. |
A kódmező egy egyedi szám, amely a hiba vagy figyelmeztetés megjelenítéséhez van hozzárendelve.
Konvenció szerint a HRESULT értékek általában a következő formátumban szerepelnek: Alkalmazás_Súlyosság_Indok.
létesítmény a létesítmény neve vagy más megkülönböztető azonosító; súlyossági egyetlen S vagy E betű, amely jelzi, hogy a függvényhívás sikeres volt-e (S), vagy hibát (E) eredményezett-e; Reason pedig a kód jelentését leíró azonosító. Az állapotkód például STG_E_FILENOTFOUND azt jelzi, hogy tárterülettel kapcsolatos hiba történt; konkrétan a kért fájl nem létezik. Az FACILITY_NULL állapotkódjai kihagyják a Létesítmény_ előtagot.
A hibakódok az interfész implementációjának kontextusában vannak definiálva. A definiálás után a sikerkódok nem módosíthatók, és nem vehetők fel új sikerkódok. Új hibakódok azonban írhatók. A Microsoft fenntartja a jogot, hogy új hibakódokat (de nem sikerkódokat) határozzon meg a FACILITY_ITF vagy új létesítményekben leírt felületekhez.