Dela via


Felkoder i COM

Com-metoder och -funktioner returnerar ett värde av typen HRESULT-för att indikera lyckade eller misslyckade . En HRESULT- är ett 32-bitars heltal. Den högsta biten i HRESULT- signalerar framgång eller misslyckande. Noll (0) anger lyckat resultat och 1 indikerar fel.

Detta ger följande numeriska intervall:

  • Lyckade koder: 0x0–0x7FFFFFFF.
  • Felkoder: 0x80000000–0xFFFFFFFF.

Ett litet antal COM-metoder returnerar inte ett HRESULT- värde. Metoderna AddRef och Release returnerar till exempel osignerade långa värden. Men varje COM-metod som returnerar en felkod gör det genom att returnera ett HRESULT- värde.

Om du vill kontrollera om en COM-metod lyckas undersöker du högordningsbiten för den returnerade HRESULT-. Windows SDK-huvuden innehåller två makron som gör det enklare: LYCKADES makro och MISSLYCKADES makro. Makrot SUCCEEDED returnerar TRUE- om en HRESULT- är en lyckad kod och FALSE- om det är en felkod. I följande exempel kontrolleras om CoInitializeEx lyckas.

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

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

Ibland är det mer praktiskt att testa det motsatta villkoret. Makrot MISSLYCKADES gör motsatsen till LYCKADES. Den returnerar TRUE- för en felkod och FALSE- för en lyckad kod.

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

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

Senare i den här modulen kommer vi att titta på några praktiska råd för hur du strukturerar din kod för att hantera COM-fel. (Se felhantering i COM.)

Nästa

Skapa ett objekt i COM-