共用方式為


COM 中的錯誤碼

為了指出成功或失敗,COM 方法和函式會傳回 HRESULT類型的值。 HRESULT是 32 位整數。 HRESULT的高序位表示成功或失敗。 零 (0) 表示成功,1 表示失敗。

這會產生下列數值範圍:

  • 成功碼:0x0–0x7FFFFFFF。
  • 錯誤碼:0x80000000–0xFFFFFFFF。

少數 COM 方法不會傳回 HRESULT 值。 例如, AddRefRelease 方法會傳回不帶正負號的長值。 但傳回錯誤碼的每個 COM 方法都會藉由傳回 HRESULT 值來進行。

若要檢查 COM 方法是否成功,請檢查傳回 之 HRESULT的高序位。 Windows SDK 標頭提供兩個宏,讓此作業更容易: SUCCEEDED 宏和 FAILED 宏。 如果HRESULT是成功碼,則SUCCEEDED宏會傳回TRUE;如果它是錯誤碼,則會傳回FALSE。 下列範例會檢查 CoInitializeEx 是否成功。

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

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

有時候測試反向條件會比較方便。 FAILED宏與SUCCEEDED相反。 它會針對錯誤碼傳回 TRUE ,並針對成功碼傳回 FALSE

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

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

稍後在本課程模組中,我們將探討如何建構程式碼以處理 COM 錯誤的一些實用建議。 (請參閱 COM.) 中的錯誤處理

下一個

在 COM 中建立物件