문제

이전 질문에서 나는 내 프로그램이 다음과 같은 모호한 값을 반환하면 그것이 무엇을 의미하는지 물었습니다.

-1073741819

이제 또 다른 큰 반환 값을 얻게 됩니다.

-1073740777

그리고 이러한 모든 값의 목록이 있는지, 그리고 그 값이 어딘가에 무엇을 의미하는지 알고 싶습니다.

도움이 되었습니까?

해결책

일반적으로 서명 된 소수점 양식 대신 16 진로로 오류 번호를 인쇄하면 더 나은 검색 결과를 얻을 수 있습니다.

예를 들어, 첫 번째 오류는 -1073741819로 16 진수에서 0xc0000005로 표시 될 수 있습니다. Google이 신속하게 말하면 "액세스 위반"오류입니다.

다른 팁

Windows 오류 코드 시스템이 확장 가능하므로 가능한 모든 Windows 오류 코드를 찾을 수있는 단일 장소는 없습니다. 그러나 시작할 수 있습니다.

  • 공부하십시오 COM 오류 코드의 구조. 때로는 오류가 발생하는 시설을 아는 것이 어떤 헤더 파일에서 왔는지 발견하는 데 도움이 될 수 있습니다.
  • 2003 년 이래로 Visual Studio에는 ERRLOOK 도구. Visual Studio를 사용하는 경우 먼저 시도하십시오.
  • 당신이 만날 수있는 많은 코드가 있습니다 Winerror.h. 해당 헤더 파일의 내용이 포함 된 MSDN 링크가 포함되어 있습니다. 또는 숫자별로 오류 코드 목록을 볼 수 있습니다. 이것 페이지.
  • 이상적으로는 코드를 반환 한 기능을 알고 있으며 MSDN에서 함수를 조회하고 가능한 모든 반환 값을 볼 수 있습니다. 물론, 당신은 참조해야합니다 Winerror.h, 또는 실제 값을 얻기위한 다른 헤더 파일.
  • 당신은 할 수 있습니다 find (유닉스처럼 grep)에서 Include 전체 오류 코드의 16 진수 값 또는 코드 섹션의 소수점 값, 즉 더 낮은 16 비트에 대한 플랫폼 SDK 디렉토리. 사용 HRESULT_CODE 그것을 추출합니다. 위의 COM 오류 코드의 구조를 참조하십시오.
  • 값으로 붙여 넣을 수있는 몇 가지 오류 조회 도구가 있으며 데이터베이스에서 찾아보고 의미하는 바를 알려줍니다. 바라보다 여기 그리고 여기.
  • Google. 전체 16 진수를 사용하십시오. 때로는 매우 유용한 정보 또는 적어도 단서를 찾을 수 있습니다.

여기에 많은 사람들이 있습니다.

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

그러나 당신의 예와 같은 것을 얻을 때 나는 단지 Google을 숫자로 만듭니다.

그들 중 다수 (com과 관련된 것들은 아니라고 생각합니다)는 이름이 지정된 헤더 파일에 있습니다. Winerror.h.

(일부 버전)에서 비주얼 스튜디오에서 'Tools'메뉴,'라는 메뉴 항목을 찾을 수 있습니다.Error Lookup...'.

ntstatus

ntstatus *다양한 시설을 포함합니다
시설 _urt (0x013) *CLR 예외

hresults

시설 _null (0x000)
Facility_RPC (0x001)
FACITION_DISPATCH (0x002)
facility_rpc_stubs (0x003)
Facility_USER (0x004) *여러 라이브러리는 동일한 오류 코드를 재사용 할 수 있습니다.
facility_mca_error_code (0x005)
Facility_WIN32, MSDN (0x007) *표준 Winapi 오류 코드
Facility_Windows (0x008)
시설 _security (0x009)
Facility_Cert (0x00B)
시설 _internet (0x00c)
Facility_Mediaserver (0x00D)
facility_msmq (0x00e)
FACITION_SETUPAPI (0x00F)
Facility_Scard (0x010)
Facility_Complus (0x011)
시설 _http (0x019)
FACITION_USERMODE_FILTER_MANAGER (0x01F)
facility_windowsupdate (0x024)
시설 _graphics (0x026)
Facility_NAP (0x027)
Facility_ink (0x028)
facility_tpm_software (0x029)
시설_UI (0x02A)
시설 _pla (0x030)
Facility_FVE (0x031)
Facility_FWP (0x032)
Facility_Winrm (0x033)
시설_ndis (0x034)
facility_usermode_hypervisor (0x035)
facility_usermode_virtualization (0x037)
facility_usermode_volmgr (0x038)
Facility_BCD (0x039)
facility_usermode_vhd (0x03a)
시설 _sdiag (0x03c)
FACITION_WEBSERVICES (0x03d)
Facility_WPN (0x03E)
시설 _mbn (0x054)
FACITION_P2P (0x063)
facility_bluetooth_att (0x065)
시설 _audio (0x066)
Facility_IMAPI2 (0x0AA)
facility_rtc_interface (0x0ee)
facility_sip_status_code (0x0EF)
facility_pint_status_code (0x0f0)
facility_max_wdstptmgmt (0x110)
FACITION_WDSMCSERVER (0x121)
FACITION_MAX_WDSMC (0x122)
FACITION_MAX_WDSCP (0x125)
Facility_Backup (0x7ff)
Facility_NTDSB (0x800)
FACITION_DIRECT3D10 (0x879)
Facility_DXGI (0x87a)
FACITION_DXGI_DDI (0x87b)
FACITION_DIRECT3D11 (0x87c)
Facility_DWrite (0x898)
시설 _d2d (0x899)
Facility_Defrag (0x900)
facility_online_id (0xa02)

버그 점검

버그 확인 코드 참조 *일명 블루 스크린

여기에 수업이 있습니다 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();
        }
    }
}

여기 100% 무료 온라인 도구가 있습니다. "매그넘DB"는 전체 Windows SDK 파일(~6,000개 파일)에서 구문 분석된 약 350,000개의 상수(정수, 문자열, GUID 등)가 포함되어 있으며 값과 이름으로 쿼리할 수 있는 "마법의 숫자 데이터베이스"입니다.부인 성명:나는 수년간 상수, 이름, 가이드를 검색한 후에 이 글을 썼습니다...

다음에 대한 결과는 다음과 같습니다. -1073741819 이는 3개의 다른 파일에 정의된 3개의 다른 상수(동일한 값과 동일한 의미를 가짐)에 매핑됩니다. 가장 일반적인 것은 STATUS_ACCESS_VIOLATION.

enter image description here

그리고 -1073740777 이는 STATUS_INVALID_CRUNTIME_PARAMETER 에 정의됨 winnt.h.

enter image description here

정수, 부호 있는 정수, 부호 없는 정수, 16진수 표기법 및 원시 텍스트 검색을 지원합니다.또한 연산으로 정의된 상수 값도 알고 있습니다(예: c2 = c1 + 1).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top