COM 中的錯誤碼
為了指出成功或失敗,COM 方法和函式會傳回 HRESULT類型的值。 HRESULT是 32 位整數。 HRESULT的高序位表示成功或失敗。 零 (0) 表示成功,1 表示失敗。
這會產生下列數值範圍:
- 成功碼:0x0–0x7FFFFFFF。
- 錯誤碼:0x80000000–0xFFFFFFFF。
少數 COM 方法不會傳回 HRESULT 值。 例如, AddRef 和 Release 方法會傳回不帶正負號的長值。 但傳回錯誤碼的每個 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.) 中的錯誤處理
下一個