乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Windows下的異常碼(Exception Code)

       照壁山人 2011-11-19

      上午我查一個異常碼(0xc000000d)表示的具體含義,我記得以前的確看到過這樣一個 表格,可查來查去,就是沒找著地方。在網(wǎng)上也找了一些資料,但都不是我想要的,都是很籠統(tǒng)地介紹它與內(nèi)存相關(guān),沒有找到類似0xc0000005對應(yīng) ACCESS_VIOLATION,0xc0000094對應(yīng)DIVIDE_BY_ZERO這樣精確的信息。

      晚上看書的時候,通過函數(shù)GetExceptionCode終于找到我曾經(jīng)看到過的那個表格,下面是MSDN中介紹GetExceptionCode的頁面上對Exception Code的描述:


      Return value Description
      EXCEPTION_ACCESS_VIOLATION The thread attempted to read from or write to a virtual address that it does not have appropriate access to.
      EXCEPTION_BREAKPOINT A breakpoint was encountered.
      EXCEPTION_DATATYPE_MISALIGNMENT The thread attempted to read or write data that is misaligned on hardware that does not provide alignment. For example, 16-bit values must be aligned on 2-byte boundaries, 32-bit values on 4-byte boundaries, and so on.
      EXCEPTION_SINGLE_STEP A trace trap or other single-instruction mechanism signaled that one instruction has been executed.
      EXCEPTION_ARRAY_BOUNDS_EXCEEDED The thread attempted to access an array element that is out of bounds, and the underlying hardware supports bounds checking.
      EXCEPTION_FLT_DENORMAL_OPERAND An operand in a floating-point operation is denormal. A denormal value is one that is too small to represent as a standard floating-point value.
      EXCEPTION_FLT_DIVIDE_BY_ZERO The thread attempted to divide a floating-point value by a floating-point divisor of zero.
      EXCEPTION_FLT_INEXACT_RESULT The result of a floating-point operation cannot be represented exactly as a decimal fraction.
      EXCEPTION_FLT_INVALID_OPERATION This exception represents a floating-point exception not included in this list.
      EXCEPTION_FLT_OVERFLOW The exponent of a floating-point operation is greater than the magnitude allowed by the corresponding type.
      EXCEPTION_FLT_STACK_CHECK The stack overflowed or underflowed as a result of a floating-point operation.
      EXCEPTION_FLT_UNDERFLOW The exponent of a floating-point operation is less than the magnitude allowed by the corresponding type.
      EXCEPTION_INT_DIVIDE_BY_ZERO The thread attempted to divide an integer value by an integer divisor of zero.
      EXCEPTION_INT_OVERFLOW The result of an integer operation caused a carry out of the most significant bit of the result.
      EXCEPTION_PRIV_INSTRUCTION The thread attempted to execute an instruction whose operation is not allowed in the current machine mode.
      EXCEPTION_NONCONTINUABLE_EXCEPTION

      The thread attempted to continue execution after a noncontinuable exception occurred.


       

      通過這些宏,又找到它們所在的位置:Microsoft Visual Studio 8\VC\PlatformSDK\Include\WinBase.h

       


      #define WAIT_IO_COMPLETION                  STATUS_USER_APC

      #define STILL_ACTIVE                        STATUS_PENDING

      #define EXCEPTION_ACCESS_VIOLATION          STATUS_ACCESS_VIOLATION

      #define EXCEPTION_DATATYPE_MISALIGNMENT     STATUS_DATATYPE_MISALIGNMENT

      #define EXCEPTION_BREAKPOINT                STATUS_BREAKPOINT

      #define EXCEPTION_SINGLE_STEP               STATUS_SINGLE_STEP

      #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED     STATUS_ARRAY_BOUNDS_EXCEEDED

      #define EXCEPTION_FLT_DENORMAL_OPERAND      STATUS_FLOAT_DENORMAL_OPERAND

      #define EXCEPTION_FLT_DIVIDE_BY_ZERO        STATUS_FLOAT_DIVIDE_BY_ZERO

      #define EXCEPTION_FLT_INEXACT_RESULT        STATUS_FLOAT_INEXACT_RESULT

      #define EXCEPTION_FLT_INVALID_OPERATION     STATUS_FLOAT_INVALID_OPERATION

      #define EXCEPTION_FLT_OVERFLOW              STATUS_FLOAT_OVERFLOW

      #define EXCEPTION_FLT_STACK_CHECK           STATUS_FLOAT_STACK_CHECK

      #define EXCEPTION_FLT_UNDERFLOW             STATUS_FLOAT_UNDERFLOW

      #define EXCEPTION_INT_DIVIDE_BY_ZERO        STATUS_INTEGER_DIVIDE_BY_ZERO

      #define EXCEPTION_INT_OVERFLOW              STATUS_INTEGER_OVERFLOW

      #define EXCEPTION_PRIV_INSTRUCTION          STATUS_PRIVILEGED_INSTRUCTION

      #define EXCEPTION_IN_PAGE_ERROR             STATUS_IN_PAGE_ERROR

      #define EXCEPTION_ILLEGAL_INSTRUCTION       STATUS_ILLEGAL_INSTRUCTION

      #define EXCEPTION_NONCONTINUABLE_EXCEPTION  STATUS_NONCONTINUABLE_EXCEPTION

      #define EXCEPTION_STACK_OVERFLOW            STATUS_STACK_OVERFLOW

      #define EXCEPTION_INVALID_DISPOSITION       STATUS_INVALID_DISPOSITION

      #define EXCEPTION_GUARD_PAGE                STATUS_GUARD_PAGE_VIOLATION

      #define EXCEPTION_INVALID_HANDLE            STATUS_INVALID_HANDLE

      #define EXCEPTION_POSSIBLE_DEADLOCK         STATUS_POSSIBLE_DEADLOCK

      #define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT


       

      宏STATUS_的位置:Microsoft Visual Studio 8\VC\PlatformSDK\Include\WinNT.h

       


      #define STATUS_WAIT_0                    ((DWORD   )0x00000000L)   

      #define STATUS_ABANDONED_WAIT_0          ((DWORD   )0x00000080L)   

      #define STATUS_USER_APC                  ((DWORD   )0x000000C0L)   

      #define STATUS_TIMEOUT                   ((DWORD   )0x00000102L)   

      #define STATUS_PENDING                   ((DWORD   )0x00000103L)   

      #define DBG_EXCEPTION_HANDLED            ((DWORD   )0x00010001L)   

      #define DBG_CONTINUE                     ((DWORD   )0x00010002L)   

      #define STATUS_SEGMENT_NOTIFICATION      ((DWORD   )0x40000005L)   

      #define DBG_TERMINATE_THREAD             ((DWORD   )0x40010003L)   

      #define DBG_TERMINATE_PROCESS            ((DWORD   )0x40010004L)   

      #define DBG_CONTROL_C                    ((DWORD   )0x40010005L)   

      #define DBG_CONTROL_BREAK                ((DWORD   )0x40010008L)   

      #define DBG_COMMAND_EXCEPTION            ((DWORD   )0x40010009L)   

      #define STATUS_GUARD_PAGE_VIOLATION      ((DWORD   )0x80000001L)   

      #define STATUS_DATATYPE_MISALIGNMENT     ((DWORD   )0x80000002L)   

      #define STATUS_BREAKPOINT                ((DWORD   )0x80000003L)   

      #define STATUS_SINGLE_STEP               ((DWORD   )0x80000004L)   

      #define DBG_EXCEPTION_NOT_HANDLED        ((DWORD   )0x80010001L)   

      #define STATUS_ACCESS_VIOLATION          ((DWORD   )0xC0000005L)   

      #define STATUS_IN_PAGE_ERROR             ((DWORD   )0xC0000006L)   

      #define STATUS_INVALID_HANDLE            ((DWORD   )0xC0000008L)   

      #define STATUS_NO_MEMORY                 ((DWORD   )0xC0000017L)   

      #define STATUS_ILLEGAL_INSTRUCTION       ((DWORD   )0xC000001DL)   

      #define STATUS_NONCONTINUABLE_EXCEPTION  ((DWORD   )0xC0000025L)   

      #define STATUS_INVALID_DISPOSITION       ((DWORD   )0xC0000026L)   

      #define STATUS_ARRAY_BOUNDS_EXCEEDED     ((DWORD   )0xC000008CL)   

      #define STATUS_FLOAT_DENORMAL_OPERAND    ((DWORD   )0xC000008DL)   

      #define STATUS_FLOAT_DIVIDE_BY_ZERO      ((DWORD   )0xC000008EL)   

      #define STATUS_FLOAT_INEXACT_RESULT      ((DWORD   )0xC000008FL)   

      #define STATUS_FLOAT_INVALID_OPERATION   ((DWORD   )0xC0000090L)   

      #define STATUS_FLOAT_OVERFLOW            ((DWORD   )0xC0000091L)   

      #define STATUS_FLOAT_STACK_CHECK         ((DWORD   )0xC0000092L)   

      #define STATUS_FLOAT_UNDERFLOW           ((DWORD   )0xC0000093L)   

      #define STATUS_INTEGER_DIVIDE_BY_ZERO    ((DWORD   )0xC0000094L)   

      #define STATUS_INTEGER_OVERFLOW          ((DWORD   )0xC0000095L)   

      #define STATUS_PRIVILEGED_INSTRUCTION    ((DWORD   )0xC0000096L)   

      #define STATUS_STACK_OVERFLOW            ((DWORD   )0xC00000FDL)   

      #define STATUS_CONTROL_C_EXIT            ((DWORD   )0xC000013AL)   

      #define STATUS_FLOAT_MULTIPLE_FAULTS     ((DWORD   )0xC00002B4L)   

      #define STATUS_FLOAT_MULTIPLE_TRAPS      ((DWORD   )0xC00002B5L)   

      #define STATUS_REG_NAT_CONSUMPTION       ((DWORD   )0xC00002C9L)   

      #if defined(STATUS_SUCCESS) || (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100)

      #define STATUS_SXS_EARLY_DEACTIVATION    ((DWORD   )0xC015000FL)   

      #define STATUS_SXS_INVALID_DEACTIVATION  ((DWORD   )0xC0150010L)   


       

      遺憾的是,始終沒有發(fā)現(xiàn)0xc000000d的蹤跡。

      我就不信了……

       

      終于讓我找到了!

       

      在翻看Windbg的幫助文件,查0xc0000005相關(guān)的信息時,有一節(jié)“Bug Check 0x1E: KMODE_EXCEPTION_NOT_HANDLED”中提到了一個NTStatus.h的文件,通過計算機搜索,竟然與WinNT.h相同的路徑, 即,Microsoft Visual Studio 8\VC\PlatformSDK\Include\NTStatus.h,里面規(guī)定了0xc000000d的意義:


      // MessageId: STATUS_INVALID_PARAMETER
      // MessageText:
      //  An invalid parameter was passed to a service or function.
      #define STATUS_INVALID_PARAMETER         ((NTSTATUS)0xC000000DL)


      此外,這個文件中還規(guī)定了其它錯誤碼的具體含義,而且從0x00000000L~0xC01A002EL,大部分都是連續(xù)的定義,非常全,感覺這個地方才是“源頭”。

       

      真沒想到,我苦苦追求的答案竟然與已經(jīng)找到的結(jié)果“近在咫尺”,真有點“眾里尋他千百度,驀然回首,那人卻在燈火闌珊處”的味道。

       

      為什么同樣的錯誤碼要在兩個不同的文件(WinNT.h和NTStatus.h)中定義?而且,這些錯誤碼都是在#ifndef WIN32_NO_STATUS條件宏中定義的。這兩個文件到底有什么不同?二者又有什么聯(lián)系?

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多