Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

208 lines
6.1 KiB

  1. /*++
  2. Copyright (c) 1999 Microsoft Corporation
  3. Module Name:
  4. cmpbug.h
  5. Abstract:
  6. Description of the registry bugchecks; only defines and comments.
  7. Author:
  8. Dragos C. Sambotin (dragoss) 02-Nov-99
  9. Environment:
  10. Revision History:
  11. --*/
  12. #ifndef __CMPBUG_H__
  13. #define __CMPBUG_H__
  14. #if defined(_CM_LDR_)
  15. //
  16. // KeBugCheckEx() is not available to boot code.
  17. //
  18. #define CM_BUGCHECK( Code, Parm1, Parm2, Parm3, Parm4 ) ASSERT(FALSE)
  19. #else
  20. #define CM_BUGCHECK( Code, Parm1, Parm2, Parm3, Parm4 ) \
  21. KeBugCheckEx( (ULONG)Code, (ULONG_PTR)Parm1, (ULONG_PTR)Parm2, (ULONG_PTR)Parm3, (ULONG_PTR)Parm4 )
  22. #endif
  23. /*
  24. CRITICAL_SERVICE_FAILED (0x5A)
  25. */
  26. /*
  27. SET_ENV_VAR_FAILED (0x5B)
  28. */
  29. #define BAD_LAST_KNOWN_GOOD 1 //CmBootLastKnownGood
  30. /*
  31. CONFIG_LIST_FAILED (0x73)
  32. Indicates that one of the core system hives cannot be linked in the
  33. registry tree. The hive is valid, it was loaded OK. Examine the 2nd
  34. bugcheck argument to see why the hive could not be linked in the
  35. registry tree.
  36. PARAMETERS
  37. 1 - 1
  38. 2 - Indicates the NT status code that tripped us into thinking
  39. that we failed to load the hive.
  40. 3 - Index of hive in hivelist
  41. 4 - Pointer to UNICODE_STRING containing filename of hive
  42. DESCRIPTION
  43. This can be either SAM, SECURITY, SOFTWARE or DEFAULT. One common reason
  44. for this to happen is if you are out of disk space on the system drive
  45. (in which case param 4 is 0xC000017D - STATUS_NO_LOG_SPACE) or an attempt
  46. to allocate pool has failed (in which case param 4 is 0xC000009A -
  47. STATUS_INSUFFICIENT_RESOURCES). Other status codes must be individually
  48. investigated.
  49. */
  50. #define BAD_CORE_HIVE 1 // CmpInitializeHiveList
  51. /*
  52. BAD_SYSTEM_CONFIG_INFO (0x74)
  53. Can indicate that the SYSTEM hive loaded by the osloader/NTLDR
  54. was corrupt. This is unlikely, since the osloader will check
  55. a hive to make sure it isn't corrupt after loading it.
  56. It can also indicate that some critical registry keys and values
  57. are not present. (i.e. somebody used regedt32 to delete something
  58. that they shouldn't have) Booting from LastKnownGood may fix
  59. the problem, but if someone is persistent enough in mucking with
  60. the registry they will need to reinstall or use the Emergency
  61. Repair Disk.
  62. PARAMETERS
  63. 1 - identifies the function
  64. 2 - identifies the line inside the function
  65. 3 - other info
  66. 4 - usually the NT status code.
  67. */
  68. #define BAD_SYSTEM_CONTROL_VALUES 1 // CmGetSystemControlValues
  69. #define BAD_HIVE_LIST 2 // CmpInitializeHiveList
  70. #define BAD_SYSTEM_HIVE 3 // CmpInitializeSystemHive
  71. /*
  72. CONFIG_INITIALIZATION_FAILED (0x67)
  73. PARAMETERS
  74. 1 - indicates location in ntos\config\cmsysini that failed
  75. 2 - location selector
  76. 3 - NT status code
  77. DESCRIPTION
  78. This means the registry couldn't allocate the pool needed to contain the
  79. registry files. This should never happen, since it is early enough in
  80. system initialization that there is always plenty of paged pool available.
  81. */
  82. #define INIT_SYSTEM1 1 // CmInitSystem1
  83. #define INIT_SYSTEM_DRIVER_LIST 2 // CmGetSystemDriverList
  84. #define INIT_CACHE_TABLE 3 // CmpInitializeCache
  85. #define INIT_DELAYED_CLOSE_TABLE 4 // CmpInitializeDelayedCloseTable
  86. /*
  87. CANNOT_WRITE_CONFIGURATION (0x75)
  88. This will result if the SYSTEM hive file cannot be converted to a
  89. mapped file. This usually happens if the system is out of pool and
  90. we cannot reopen the hive.
  91. PARAMETERS
  92. 1 - 1
  93. 2 - Indicates the NT status code that tripped us into thinking
  94. that we failed to convert the hive.
  95. DESCRIPTION
  96. Normally you shouldn't see this as the conversion happens at early
  97. during system initialization, so enough pool should be available.
  98. */
  99. #define CANNOT_CONVERT_SYSTEM_HIVE 1
  100. /*
  101. REGISTRY_ERROR (0x51)
  102. PARAMETERS
  103. 1 - value 1 (indicates where we bugchecked)
  104. 2 - value 2 (indicates where we bugchecked)
  105. 3 - depends on where it bugchecked, may be pointer to hive
  106. 4 - depends on where it bugchecked, may be return code of
  107. HvCheckHive if the hive is corrupt.
  108. DESCRIPTION
  109. Something has gone horribly wrong with the registry. If a kernel debugger
  110. is available, get a stack trace.It can also indicate that the registry got
  111. an I/O error while trying to read one of its files, so it can be caused by
  112. hardware problems or filesystem corruption.
  113. It may occur due to a failure in a refresh operation, which is used only
  114. in by the security system, and then only when resource limits are encountered.
  115. */
  116. #define BAD_CELL_MAP 1 // VALIDATE_CELL_MAP
  117. #define BAD_FREE_BINS_LIST 2 // HvpDelistBinFreeCells
  118. #define FATAL_MAPPING_ERROR 3 // HvpFindNextDirtyBlock
  119. // HvpDoWriteHive
  120. #define BAD_SECURITY_CACHE 4 // CmpAssignSecurityToKcb
  121. // CmpSetSecurityDescriptorInfo
  122. #define BAD_SECURITY_METHOD 5 // CmpSecurityMethod
  123. #define CHECK_LOCK_EXCEPTION 6 // CmpCheckLockExceptionFilter
  124. #define REGISTRY_LOCK_CHECKPOINT 7 // END_LOCK_CHECKPOINT
  125. #define BIG_CELL_ERROR 8 // CmpValueToData
  126. #define CMVIEW_ERROR 9 // CmpAllocateCmView
  127. // CmpFreeCmView
  128. // CmpPinCmView
  129. #define REFRESH_HIVE 0xA // HvRefreshHive
  130. #define ALLOCATE_SECURITY_DESCRIPTOR 0xB // CmpHiveRootSecurityDescriptor
  131. #define BAD_NOTIFY_CONTEXT 0xC // NtNotifyChangeMultipleKeys
  132. #define QUOTA_ERROR 0xD // CmpReleaseGlobalQuota
  133. #define INVALID_WRITE_OPERATION 0xE // NtCreateKey
  134. #define HANDLES_STILL_OPEN_AT_SHUTDOWN 0xF // CmFreeAllMemory
  135. #define COMPRESS_HIVE 0x10 // CmCompressKey
  136. #define ALLOC_ERROR 0x11 // CmpFreeKeyControlBlock
  137. #endif // _CMPBUG_