모든 Windows 오류 코드 목록은 어디에서 찾을 수 있나요?
-
22-08-2019 - |
문제
이전 질문에서 나는 내 프로그램이 다음과 같은 모호한 값을 반환하면 그것이 무엇을 의미하는지 물었습니다.
-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
.
그리고 -1073740777 이는 STATUS_INVALID_CRUNTIME_PARAMETER
에 정의됨 winnt.h
.
정수, 부호 있는 정수, 부호 없는 정수, 16진수 표기법 및 원시 텍스트 검색을 지원합니다.또한 연산으로 정의된 상수 값도 알고 있습니다(예: c2 = c1 + 1).