209 lines
6.1 KiB
C
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_
|