2012-10-04 78 views
0

由於在使用Windows運行時,我們必須處理COM錯誤代碼(HRESULT值),所以我想知道哪裏可以找到有關錯誤代碼的信息。我當然試過谷歌,但只發現了桌面應用程序的代碼(http://msdn.microsoft.com/en-us/library/windows/desktop/dd542642%28v=vs.85%29.aspx)。可能相同,但Windows運行時肯定會向該列表中添加錯誤代碼。哪裏可以找到Windows運行時的COM錯誤代碼?

回答

0

鏈接到的文檔("COM Error Codes")應包含所有標準HRESULT值。請注意,也有system error codes可以顯示爲HRESULT。

標準的HRESULT和錯誤代碼也在<winerror.h>頭,它是Windows SDK的一部分(該頭還定義了HRESULT_FROM_WIN32功能,其可以被用於對系統的錯誤代碼轉換成等價的HRESULT定義。

注意,其他組件(例如第三方組件),可以使用其他的HRESULT。每個組件都應該記錄這HRESULT值,它使用以及它們的含義。

+0

感謝詹姆斯。Winerror.h中是一個非常有用的提示(我而不是C++程序員)我希望能夠更容易地獲得關於WinRT中可能的HRESULT代碼的信息(因此更容易獲得在.NET中的已知錯誤未映射到非泛型例外)。就像發現一樣,0x800700CE意味着什麼。在我的理解中,我首先應該檢查這是否是一個已知的HRESULT值。如果沒有,我可以嘗試從中提取錯誤代碼,在某些情況下可能會失敗(根據http://blogs.msdn.com/b/oldnewthing/archive/2006/11/03/942851.aspx)。 –

+0

@JürgenBayer:這是'ERROR_FILENAME_EXCED_RANGE':設備('7')是Win32;錯誤代碼是'0xce',它是十進制的'206',在''中是錯誤。可能需要一些工作,是的。我記得聽說有一個工具可以執行錯誤代碼查找,但我不記得其他任何內容。調試器在監視窗口中使用'@ err' psuedovariable封裝'GetLastError()',但這對於arbirary調用不起作用,只能調用最後一個錯誤。 –

相關問題