windows-nt/Source/XPSP1/NT/base/ntos/config/cmpbug.h
2020-09-26 16:20:57 +08:00

209 lines
6.1 KiB
C

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
cmpbug.h
Abstract:
Description of the registry bugchecks; only defines and comments.
Author:
Dragos C. Sambotin (dragoss) 02-Nov-99
Environment:
Revision History:
--*/
#ifndef __CMPBUG_H__
#define __CMPBUG_H__
#if defined(_CM_LDR_)
//
// KeBugCheckEx() is not available to boot code.
//
#define CM_BUGCHECK( Code, Parm1, Parm2, Parm3, Parm4 ) ASSERT(FALSE)
#else
#define CM_BUGCHECK( Code, Parm1, Parm2, Parm3, Parm4 ) \
KeBugCheckEx( (ULONG)Code, (ULONG_PTR)Parm1, (ULONG_PTR)Parm2, (ULONG_PTR)Parm3, (ULONG_PTR)Parm4 )
#endif
/*
CRITICAL_SERVICE_FAILED (0x5A)
*/
/*
SET_ENV_VAR_FAILED (0x5B)
*/
#define BAD_LAST_KNOWN_GOOD 1 //CmBootLastKnownGood
/*
CONFIG_LIST_FAILED (0x73)
Indicates that one of the core system hives cannot be linked in the
registry tree. The hive is valid, it was loaded OK. Examine the 2nd
bugcheck argument to see why the hive could not be linked in the
registry tree.
PARAMETERS
1 - 1
2 - Indicates the NT status code that tripped us into thinking
that we failed to load the hive.
3 - Index of hive in hivelist
4 - Pointer to UNICODE_STRING containing filename of hive
DESCRIPTION
This can be either SAM, SECURITY, SOFTWARE or DEFAULT. One common reason
for this to happen is if you are out of disk space on the system drive
(in which case param 4 is 0xC000017D - STATUS_NO_LOG_SPACE) or an attempt
to allocate pool has failed (in which case param 4 is 0xC000009A -
STATUS_INSUFFICIENT_RESOURCES). Other status codes must be individually
investigated.
*/
#define BAD_CORE_HIVE 1 // CmpInitializeHiveList
/*
BAD_SYSTEM_CONFIG_INFO (0x74)
Can indicate that the SYSTEM hive loaded by the osloader/NTLDR
was corrupt. This is unlikely, since the osloader will check
a hive to make sure it isn't corrupt after loading it.
It can also indicate that some critical registry keys and values
are not present. (i.e. somebody used regedt32 to delete something
that they shouldn't have) Booting from LastKnownGood may fix
the problem, but if someone is persistent enough in mucking with
the registry they will need to reinstall or use the Emergency
Repair Disk.
PARAMETERS
1 - identifies the function
2 - identifies the line inside the function
3 - other info
4 - usually the NT status code.
*/
#define BAD_SYSTEM_CONTROL_VALUES 1 // CmGetSystemControlValues
#define BAD_HIVE_LIST 2 // CmpInitializeHiveList
#define BAD_SYSTEM_HIVE 3 // CmpInitializeSystemHive
/*
CONFIG_INITIALIZATION_FAILED (0x67)
PARAMETERS
1 - indicates location in ntos\config\cmsysini that failed
2 - location selector
3 - NT status code
DESCRIPTION
This means the registry couldn't allocate the pool needed to contain the
registry files. This should never happen, since it is early enough in
system initialization that there is always plenty of paged pool available.
*/
#define INIT_SYSTEM1 1 // CmInitSystem1
#define INIT_SYSTEM_DRIVER_LIST 2 // CmGetSystemDriverList
#define INIT_CACHE_TABLE 3 // CmpInitializeCache
#define INIT_DELAYED_CLOSE_TABLE 4 // CmpInitializeDelayedCloseTable
/*
CANNOT_WRITE_CONFIGURATION (0x75)
This will result if the SYSTEM hive file cannot be converted to a
mapped file. This usually happens if the system is out of pool and
we cannot reopen the hive.
PARAMETERS
1 - 1
2 - Indicates the NT status code that tripped us into thinking
that we failed to convert the hive.
DESCRIPTION
Normally you shouldn't see this as the conversion happens at early
during system initialization, so enough pool should be available.
*/
#define CANNOT_CONVERT_SYSTEM_HIVE 1
/*
REGISTRY_ERROR (0x51)
PARAMETERS
1 - value 1 (indicates where we bugchecked)
2 - value 2 (indicates where we bugchecked)
3 - depends on where it bugchecked, may be pointer to hive
4 - depends on where it bugchecked, may be return code of
HvCheckHive if the hive is corrupt.
DESCRIPTION
Something has gone horribly wrong with the registry. If a kernel debugger
is available, get a stack trace.It can also indicate that the registry got
an I/O error while trying to read one of its files, so it can be caused by
hardware problems or filesystem corruption.
It may occur due to a failure in a refresh operation, which is used only
in by the security system, and then only when resource limits are encountered.
*/
#define BAD_CELL_MAP 1 // VALIDATE_CELL_MAP
#define BAD_FREE_BINS_LIST 2 // HvpDelistBinFreeCells
#define FATAL_MAPPING_ERROR 3 // HvpFindNextDirtyBlock
// HvpDoWriteHive
#define BAD_SECURITY_CACHE 4 // CmpAssignSecurityToKcb
// CmpSetSecurityDescriptorInfo
#define BAD_SECURITY_METHOD 5 // CmpSecurityMethod
#define CHECK_LOCK_EXCEPTION 6 // CmpCheckLockExceptionFilter
#define REGISTRY_LOCK_CHECKPOINT 7 // END_LOCK_CHECKPOINT
#define BIG_CELL_ERROR 8 // CmpValueToData
#define CMVIEW_ERROR 9 // CmpAllocateCmView
// CmpFreeCmView
// CmpPinCmView
#define REFRESH_HIVE 0xA // HvRefreshHive
#define ALLOCATE_SECURITY_DESCRIPTOR 0xB // CmpHiveRootSecurityDescriptor
#define BAD_NOTIFY_CONTEXT 0xC // NtNotifyChangeMultipleKeys
#define QUOTA_ERROR 0xD // CmpReleaseGlobalQuota
#define INVALID_WRITE_OPERATION 0xE // NtCreateKey
#define HANDLES_STILL_OPEN_AT_SHUTDOWN 0xF // CmFreeAllMemory
#define COMPRESS_HIVE 0x10 // CmCompressKey
#define ALLOC_ERROR 0x11 // CmpFreeKeyControlBlock
#endif // _CMPBUG_