我在哪里可以找到 .NET Framework 包装的所有 "COR_E_" HRESULT 的参考?

Where I could find a reference for all the "COR_E_" HRESULTs wrapped by .NET framework?

我正在为互操作编写一个简单的 Enum,它将只定义一小部分常见的 HRESULT 值我们可以通过 Win32 函数获得。

目前,我已经定义了从 this MSDN 参考和其他来源获取的这些值:

E_ABORT = &H80004004
E_ACCESSDENIED = &H80070005
E_FAIL = &H80004005
E_HANDLE = &H80070006
E_INVALIDARG = &H80070057
E_NOINTERFACE = &H80004002
E_NOTIMPL = &H80004001
E_OUTOFMEMORY = &H8007000E
E_PENDING = &H8000000A
E_POINTER = &H80004003
E_UNEXPECTED = &H8000FFFF
S_FALSE = &H1
S_OK = &H0

为了完成这个 Enum,我想定义带有 "COR_E" 前缀的 HRESULT 值,这些值由 .NET Framework 的异常 类 如 this MSDN 文章中所述。

我一直在 this pinvoke.net reference and this MSDN 参考资料和 谷歌搜索 中搜索这些值,但我不能找到我想要的那些值的任何列表。

我怎样才能获得那些 HRESULT 值的列表?

例如,您可以在 .NET Framework 本身的源代码中找到它们。这里是 link to relevant file (as you mention in comments - there are more such files, for example)。我也复制过来供参考:

internal static class __HResults
{
    internal const int RO_E_CLOSED = unchecked((int)0x80000013);
    internal const int E_BOUNDS = unchecked((int)0x8000000B);
    internal const int E_CHANGED_STATE = unchecked((int)0x8000000C);
    internal const int E_FAIL = unchecked((int)0x80004005); 
    internal const int E_POINTER = unchecked((int)0x80004003); 
    internal const int E_NOTIMPL = unchecked((int)0x80004001);
    internal const int REGDB_E_CLASSNOTREG = unchecked((int)0x80040154);
    internal const int COR_E_AMBIGUOUSMATCH = unchecked((int)0x8000211D); 
    internal const int COR_E_APPDOMAINUNLOADED = unchecked((int)0x80131014); 
    internal const int COR_E_APPLICATION = unchecked((int)0x80131600); 
    internal const int COR_E_ARGUMENT = unchecked((int)0x80070057); 
    internal const int COR_E_ARGUMENTOUTOFRANGE = unchecked((int)0x80131502); 
    internal const int COR_E_ARITHMETIC = unchecked((int)0x80070216); 
    internal const int COR_E_ARRAYTYPEMISMATCH = unchecked((int)0x80131503);      
    internal const int COR_E_BADIMAGEFORMAT = unchecked((int)0x8007000B);     
    internal const int COR_E_TYPEUNLOADED = unchecked((int)0x80131013); 
    internal const int COR_E_CANNOTUNLOADAPPDOMAIN = unchecked((int)0x80131015); 
    internal const int COR_E_COMEMULATE = unchecked((int)0x80131535); 
    internal const int COR_E_CONTEXTMARSHAL = unchecked((int)0x80131504); 
    internal const int COR_E_DATAMISALIGNED = unchecked((int)0x80131541);
    internal const int COR_E_TIMEOUT = unchecked((int)0x80131505);        
    internal const int COR_E_CUSTOMATTRIBUTEFORMAT = unchecked((int)0x80131605); 
    internal const int COR_E_DIVIDEBYZERO = unchecked((int)0x80020012); // DISP_E_DIVBYZERO
    internal const int COR_E_DUPLICATEWAITOBJECT = unchecked((int)0x80131529);
    internal const int COR_E_EXCEPTION = unchecked((int)0x80131500); 
    internal const int COR_E_EXECUTIONENGINE = unchecked((int)0x80131506); 
    internal const int COR_E_FIELDACCESS = unchecked((int)0x80131507); 
    internal const int COR_E_FORMAT = unchecked((int)0x80131537); 
    internal const int COR_E_INDEXOUTOFRANGE = unchecked((int)0x80131508); 
    internal const int COR_E_INSUFFICIENTMEMORY = unchecked((int)0x8013153D);
    internal const int COR_E_INSUFFICIENTEXECUTIONSTACK = unchecked((int)0x80131578);
    internal const int COR_E_INVALIDCAST = unchecked((int)0x80004002); 
    internal const int COR_E_INVALIDCOMOBJECT = unchecked((int)0x80131527);
    internal const int COR_E_INVALIDFILTERCRITERIA = unchecked((int)0x80131601); 
    internal const int COR_E_INVALIDOLEVARIANTTYPE = unchecked((int)0x80131531);   
    internal const int COR_E_INVALIDOPERATION = unchecked((int)0x80131509); 
    internal const int COR_E_INVALIDPROGRAM = unchecked((int)0x8013153A); 
    internal const int COR_E_KEYNOTFOUND = unchecked((int)0x80131577);
    internal const int COR_E_MARSHALDIRECTIVE = unchecked((int)0x80131535); 
    internal const int COR_E_MEMBERACCESS = unchecked((int)0x8013151A); 
    internal const int COR_E_METHODACCESS = unchecked((int)0x80131510); 
    internal const int COR_E_MISSINGFIELD = unchecked((int)0x80131511); 
    internal const int COR_E_MISSINGMANIFESTRESOURCE = unchecked((int)0x80131532);
    internal const int COR_E_MISSINGMEMBER = unchecked((int)0x80131512);
    internal const int COR_E_MISSINGMETHOD = unchecked((int)0x80131513); 
    internal const int COR_E_MISSINGSATELLITEASSEMBLY = unchecked((int)0x80131536);
    internal const int COR_E_MULTICASTNOTSUPPORTED = unchecked((int)0x80131514); 
    internal const int COR_E_NOTFINITENUMBER = unchecked((int)0x80131528);
    internal const int COR_E_PLATFORMNOTSUPPORTED = unchecked((int)0x80131539); 
    internal const int COR_E_NOTSUPPORTED = unchecked((int)0x80131515); 
    internal const int COR_E_NULLREFERENCE = unchecked((int)0x80004003); 
    internal const int COR_E_OBJECTDISPOSED = unchecked((int)0x80131622);
    internal const int COR_E_OPERATIONCANCELED = unchecked((int)0x8013153B);
    internal const int COR_E_OUTOFMEMORY = unchecked((int)0x8007000E); 
    internal const int COR_E_OVERFLOW = unchecked((int)0x80131516); 
    internal const int COR_E_RANK = unchecked((int)0x80131517); 
    internal const int COR_E_REFLECTIONTYPELOAD    = unchecked((int)0x80131602); 
    internal const int COR_E_RUNTIMEWRAPPED = unchecked((int)0x8013153E);
    internal const int COR_E_SAFEARRAYRANKMISMATCH = unchecked((int)0x80131538); 
    internal const int COR_E_SAFEARRAYTYPEMISMATCH = unchecked((int)0x80131533); 
    internal const int COR_E_SAFEHANDLEMISSINGATTRIBUTE = unchecked((int)0x80131623);
    internal const int COR_E_SECURITY = unchecked((int)0x8013150A); 
    internal const int COR_E_SERIALIZATION = unchecked((int)0x8013150C);
    internal const int COR_E_SEMAPHOREFULL = unchecked((int)0x8013152B);
    internal const int COR_E_WAITHANDLECANNOTBEOPENED = unchecked((int)0x8013152C);
    internal const int COR_E_ABANDONEDMUTEX = unchecked((int)0x8013152D);
    internal const int COR_E_Whosebug = unchecked((int)0x800703E9); 
    internal const int COR_E_SYNCHRONIZATIONLOCK = unchecked((int)0x80131518); 
    internal const int COR_E_SYSTEM = unchecked((int)0x80131501); 
    internal const int COR_E_TARGET = unchecked((int)0x80131603); 
    internal const int COR_E_TARGETINVOCATION = unchecked((int)0x80131604); 
    internal const int COR_E_TARGETPARAMCOUNT = unchecked((int)0x8002000e);
    internal const int COR_E_THREADABORTED = unchecked((int)0x80131530); 
    internal const int COR_E_THREADINTERRUPTED = unchecked((int)0x80131519); 
    internal const int COR_E_THREADSTATE = unchecked((int)0x80131520); 
    internal const int COR_E_THREADSTOP = unchecked((int)0x80131521); 
    internal const int COR_E_THREADSTART = unchecked((int)0x80131525);
    internal const int COR_E_TYPEACCESS = unchecked((int)0x80131543);
    internal const int COR_E_TYPEINITIALIZATION = unchecked((int)0x80131534); 
    internal const int COR_E_TYPELOAD = unchecked((int)0x80131522); 
    internal const int COR_E_ENTRYPOINTNOTFOUND = unchecked((int)0x80131523); 
    internal const int COR_E_DLLNOTFOUND = unchecked((int)0x80131524); 
    internal const int COR_E_UNAUTHORIZEDACCESS = unchecked((int)0x80070005); 
    internal const int COR_E_UNSUPPORTEDFORMAT = unchecked((int)0x80131523); 
    internal const int COR_E_VERIFICATION = unchecked((int)0x8013150D); 
    internal const int COR_E_HOSTPROTECTION = unchecked((int)0x80131640);
    internal const int CORSEC_E_MIN_GRANT_FAIL = unchecked((int)0x80131417);
    internal const int CORSEC_E_NO_EXEC_PERM = unchecked((int)0x80131418);
    internal const int CORSEC_E_POLICY_EXCEPTION = unchecked((int)0x80131416);
    internal const int CORSEC_E_XMLSYNTAX = unchecked((int)0x80131418);
    internal const int NTE_FAIL = unchecked((int)0x80090020); 
    internal const int CORSEC_E_CRYPTO = unchecked((int)0x80131430);
    internal const int CORSEC_E_CRYPTO_UNEX_OPER = unchecked((int)0x80131431);
    internal const int DISP_E_OVERFLOW = unchecked((int)0x8002000a);
    internal const int FUSION_E_REF_DEF_MISMATCH = unchecked((int)0x80131040);
    internal const int FUSION_E_INVALID_NAME = unchecked((int)0x80131047);
    internal const int TYPE_E_TYPEMISMATCH = unchecked((int)0x80028ca0);
}

来自 IO 文件:

internal static class __HResults
{
    // These use an error code from WinError.h
    public const int COR_E_ENDOFSTREAM = unchecked((int)0x80070026);  // OS defined
    public const int COR_E_FILELOAD = unchecked((int)0x80131621);
    public const int COR_E_FILENOTFOUND = unchecked((int)0x80070002);
    public const int COR_E_DIRECTORYNOTFOUND = unchecked((int)0x80070003);
    public const int COR_E_PATHTOOLONG = unchecked((int)0x800700CE);

    public const int COR_E_IO = unchecked((int)0x80131620);
}

正如 Hans Passant 所说,SDK 的 CorError.h 是最终参考。

这个博客中也非常方便地总结了错误代码post
Yi Zhang's MSDN Blog: Interpreting HRESULTS returned from .NET/CLR: 0x8013XXXX.

我已将此页面加入书签,这是我解释 HRESULT 的第一个地方。