20

以前の質問で、プログラムが次のようなあいまいな値を返したときの意味を尋ねました。

-1073741819

さて、今、私は別の大きな戻り値を取得しています.

-1073740777

そして、これらすべての値のリストと、それらがどこに何を意味するのかを知りたいですか?

4

7 に答える 7

14

Windows エラー コード システムは拡張可能なため、考えられるすべての Windows エラー コードを検索できる単一の場所はありません。ただし、次のものから始めることができます。

  • COM エラー コードの構造を調べます。エラーがどの機能から発生したかがわかると、エラーが発生したヘッダー ファイルを特定するのに役立つ場合があります。
  • 少なくとも 2003 年以降、Visual Studio にはERRLOOKツールが含まれています。Visual Studio を使用している場合は、まずそれを試してください。
  • 遭遇するコードの多くはWinerror.h. そのヘッダー ファイルの内容を含む MSDN へのリンクを含めました。または、このページの番号別のエラー コード リストを参照することもできます。
  • 理想的には、どの関数がコードを返したかを知っていれば、MSDN でその関数を検索し、考えられるすべての戻り値を調べることができます。もちろん、Winerror.h実際の値を取得するには、 または別のヘッダー ファイルを参照する必要があります。
  • find( Unixのようgrepに)Includeプラットフォーム SDK のディレクトリで、エラー コード全体の 16 進数値、またはコード セクションのみの 10 進数値、つまり下位 16 ビットのいずれかを取得できます。HRESULT_CODEそれを抽出するために使用します。上記の COM エラー コードの構造を参照してください。
  • 値を貼り付けることができるいくつかのエラー検索ツールがあり、データベースで検索してその意味を教えてくれます。ここここを見てください。
  • グーグル。完全な 16 進数値を使用します。非常に有用な情報、または少なくとも手がかりが見つかる場合があります。
于 2009-07-04T01:40:01.057 に答える
12

通常、エラー番号を符号付き 10 進数ではなく 16 進数で出力すると、より良い検索結果が得られます。

たとえば、最初のエラーは -1073741819 で、16 進数で 0xC0000005 で表すこともできます。これは「アクセス違反」エラーで、Google がすぐに教えてくれます。

于 2009-07-04T01:20:59.473 に答える
6

ここにはたくさんの奴らがいる

http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx

しかし、あなたの例のようなものを手に入れたら、番号をグーグルで検索します。

于 2009-07-04T01:18:03.053 に答える
6

それらの多く (ただし、COM に関連するものではないと思います) は、winerror.hという名前のヘッダー ファイルにあります。

(一部のバージョンの) Visual Studio では、' Tools' メニューの下に、' ' という名前のメニュー項目が表示される場合がありますError Lookup...

于 2009-07-04T01:23:33.447 に答える
6

NTSTATUS

NTSTATUS *さまざまな施設をカバー
FACILITY_URT (0x013) *CLR 例外

HRESULTS

施設_null 0x000)施設
_rpc ( 0x001 )施設
_dispatch(0x002)施設
_rpc_stubs0x003)施設
_user
0x004)*複数のライブラリは同じエラーコードを再利用できます。0x009) FACILITY_CERT (0x00B) FACILITY_INTERNET (0x00C) FACILITY_MEDIASERVER (0x00D) FACILITY_MSMQ (0x00E) FACILITY_SETUPAPI (0x00F) FACILITY_SCARD (0x010)









FACILITY_COMPLUS (0x011)
FACILITY_HTTP (0x019)
FACILITY_USERMODE_FILTER_MANAGER (0x01F)
FACILITY_WINDOWSUPDATE (0x024)
FACILITY_GRAPHICS (0x026)
FACILITY_NAP (0x027)
FACILITY_INK (0x028)
FACILITY_TPM_SOFTWARE (0x029)
FACILITY_UI (0x02A)
FACILITY_PLA (0x030)
FACILITY_FVE (0x031)
FACILITY_FWP (0x032)
FACILITY_WINRM ( 0x033)
FACILITY_NDIS (0x034)
FACILITY_USERMODE_HYPERVISOR (0x035)
FACILITY_USERMODE_VIRTUALIZATION (0x037)
FACILITY_USERMODE_VOLMGR(0x038)
FACILITY_BCD (0x039)
FACILITY_USERMODE_VHD (0x03A)
FACILITY_SDIAG (0x03C)
FACILITY_WEBSERVICES (0x03D)
FACILITY_WPN (0x03E)
FACILITY_MBN (0x054)
FACILITY_P2P (0x063)
FACILITY_BLUETOOTH_ATT (0x065)
FACILITY_AUDIO (0x066)
FACILITY_IMAPI2 (0x0AA)
FACILITY_RTC_INTERFACE (0x0EE)
FACILITY_SIP_STATUS_CODE (0x0EF )
FACILITY_PINT_STATUS_CODE (0x0F0)
FACILITY_MAX_WDSTPTMGMT (0x110)
FACILITY_WDSMCSERVER (0x121)
FACILITY_MAX_WDSMC (0x122)
施設_max_wdscp 0x125 )施設_backup (0x7ff)施設_ntdsb (0x800)施設
_direct3d10 ( 0x879)施設
_dxgi0x87a)施設
_dxgi_ddi0x87b)施設施設施設( 0x87c )施設施設( 0x8898







バグチェック

バグ チェック コード リファレンス*別名ブルー スクリーン

于 2014-01-17T16:52:23.560 に答える
1

エラー コードを にC#変換するのに役立つクラスを次に示します。string

public static class WinErrors
{
    #region definitions
    [DllImport("kernel32.dll", SetLastError = true)]
    static extern IntPtr LocalFree(IntPtr hMem);

    [DllImport("kernel32.dll", SetLastError = true)]
    static extern int FormatMessage(FormatMessageFlags dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, ref IntPtr lpBuffer, uint nSize, IntPtr Arguments);

    [Flags]
    private enum FormatMessageFlags : uint
    {
        FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100,
        FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200,
        FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000,
        FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000,
        FORMAT_MESSAGE_FROM_HMODULE = 0x00000800,
        FORMAT_MESSAGE_FROM_STRING = 0x00000400,
    }
    #endregion

    /// <summary>
    /// Gets a user friendly string message for a system error code
    /// </summary>
    /// <param name="errorCode">System error code</param>
    /// <returns>Error string</returns>
    public static string GetSystemMessage(int errorCode)
    {
        try
        {
            IntPtr lpMsgBuf = IntPtr.Zero;

            int dwChars = FormatMessage(
                FormatMessageFlags.FORMAT_MESSAGE_ALLOCATE_BUFFER | FormatMessageFlags.FORMAT_MESSAGE_FROM_SYSTEM | FormatMessageFlags.FORMAT_MESSAGE_IGNORE_INSERTS,
                IntPtr.Zero,
                (uint) errorCode,
                0, // Default language
                ref lpMsgBuf,
                0,
                IntPtr.Zero);
            if (dwChars == 0)
            {
                // Handle the error.
                int le = Marshal.GetLastWin32Error();
                return "Unable to get error code string from System - Error " + le.ToString();
            }

            string sRet = Marshal.PtrToStringAnsi(lpMsgBuf);

            // Free the buffer.
            lpMsgBuf = LocalFree(lpMsgBuf);
            return sRet;
        }
        catch (Exception e)
        {
            return "Unable to get error code string from System -> " + e.ToString();
        }
    }
}
于 2014-01-16T22:30:25.257 に答える