Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby wskazać powodzenie lub niepowodzenie, metody i funkcje COM zwracają wartość typu HRESULT. HRESULT jest 32-bitową liczbą całkowitą. Bit o wysokiej kolejności HRESULT sygnalizuje powodzenie lub niepowodzenie. Zero (0) wskazuje powodzenie, a 1 oznacza niepowodzenie.
Spowoduje to utworzenie następujących zakresów liczbowych:
- Kody powodzenia: 0x0–0x7FFFFFFF.
- Kody błędów: 0x80000000–0xFFFFFFFF.
Niewielka liczba metod COM nie zwraca wartości HRESULT. Na przykład metody AddRef i Release zwracają niepodpisane długie wartości. Jednak każda metoda COM, która zwraca kod błędu, zwraca wartość HRESULT.
Aby sprawdzić, czy metoda COM powiedzie się, sprawdź bit o wysokiej kolejności zwróconej HRESULT. Nagłówki zestawu Windows SDK zawierają dwa makra, które to ułatwiają: makro SUCCEEDED oraz makro FAILED. Makro SUCCEEDED zwraca TRUE, jeśli HRESULT jest kodem powodzenia, i FALSE, jeśli jest kodem błędu. Poniższy przykład sprawdza, czy CoInitializeEx się powiedzie.
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
// The function succeeded.
}
else
{
// Handle the error.
}
Czasami bardziej wygodne jest przetestowanie warunku odwrotnego. Makro NIEUDANE wykonuje przeciwieństwo UDANE. Zwraca TRUE dla kodu błędu i FALSE dla kodu powodzenia.
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (FAILED(hr))
{
// Handle the error.
}
else
{
// The function succeeded.
}
W dalszej części tego modułu przyjrzymy się praktycznym poradom dotyczącym sposobu tworzenia struktury kodu w celu obsługi błędów COM. (Zobacz obsługę błędów wCOM).
Dalej