18#define _CM_DEBUG_ 0x00
23#define CM_HANDLE_DEBUG 0x01
24#define CM_NAMESPACE_DEBUG 0x02
25#define CM_SECURITY_DEBUG 0x04
26#define CM_REFERENCE_DEBUG 0x08
27#define CM_CALLBACK_DEBUG 0x10
33#ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED
34#define CMTRACE DbgPrintEx
36#define CMTRACE(x, ...) \
37 if (x & CmpTraceLevel) DbgPrint(__VA_ARGS__)
40#define CMTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
46#define CM_KCB_SIGNATURE 'bKmC'
47#define CM_KCB_INVALID_SIGNATURE '4FmC'
52#define CM_KCB_NO_SUBKEY 0x01
53#define CM_KCB_SUBKEY_ONE 0x02
54#define CM_KCB_SUBKEY_HINT 0x04
55#define CM_KCB_SYM_LINK_FOUND 0x08
56#define CM_KCB_KEY_NON_EXIST 0x10
57#define CM_KCB_NO_DELAY_CLOSE 0x20
58#define CM_KCB_INVALID_CACHED_INFO 0x40
59#define CM_KCB_READ_ONLY_KEY 0x80
64#define CM_KEY_BODY_TYPE 0x6B793032
70#define CMP_SECURITY_HASH_LISTS 64
72#define CMP_MAX_CALLBACKS 100
77#define CMP_HASH_IRRATIONAL 314159269
78#define CMP_HASH_PRIME 1000000007
83#define CMP_CREATE_FAKE_KCB 0x1
84#define CMP_LOCK_HASHES_FOR_KCB 0x2
89#define CMP_CREATE_KCB_KCB_LOCKED 0x2
90#define CMP_OPEN_KCB_NO_CREATE 0x4
95#define CMP_ENLIST_KCB_LOCKED_SHARED 0x1
96#define CMP_ENLIST_KCB_LOCKED_EXCLUSIVE 0x2
101#define CMP_LOCK_KCB_ARRAY_EXCLUSIVE 0x1
102#define CMP_LOCK_KCB_ARRAY_SHARED 0x2
107#define CMP_UNLOCK_KCB_LOCKED 0x1
108#define CMP_UNLOCK_REGISTRY_LOCKED 0x2
113#define MAXIMUM_CACHED_DATA (2 * PAGE_SIZE)
118#define CM_NUMBER_OF_MACHINE_HIVES 6
123#define CM_KCBS_PER_PAGE \
124 ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_KEY_CONTROL_BLOCK))
125#define CM_DELAYS_PER_PAGE \
126 ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_DELAY_ALLOC))
131#define CMP_SUBKEY_LEVELS_DEPTH_LIMIT 32
132#define CMP_KCBS_IN_ARRAY_LIMIT (CMP_SUBKEY_LEVELS_DEPTH_LIMIT + 2)
164 PVOID LockBackTrace[5];
static GENERIC_MAPPING GenericMapping
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
_In_ PFCB _In_ LONGLONG FileOffset
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
NTSTATUS NTAPI CmpSecurityMethod(IN PVOID Object, IN SECURITY_OPERATION_CODE OperationType, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG CapturedLength, IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
struct _KEY_VALUE_INFORMATION * PKEY_VALUE_INFORMATION
NTSTATUS NTAPI CmpLinkHiveToMaster(IN PUNICODE_STRING LinkName, IN HANDLE RootDirectory, IN PCMHIVE CmHive, IN BOOLEAN Allocate, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
VOID NTAPI CmpAddToDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
HCELL_INDEX NTAPI CmpCopyCell(IN PHHIVE SourceHive, IN HCELL_INDEX SourceCell, IN PHHIVE DestinationHive, IN HSTORAGE_TYPE StorageType)
VOID NTAPI CmpDelayDerefKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
VOID NTAPI CmpLazyFlush(VOID)
VOID NTAPI CmpCleanUpKcbCacheWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
VOID NTAPI CmpSetVersionData(VOID)
struct _CM_NAME_CONTROL_BLOCK CM_NAME_CONTROL_BLOCK
VOID CmpUnLockKcbArray(_In_ PULONG LockedKcbs)
Unlocks a number of KCBs provided by a KCB array.
ULONG CmDefaultLanguageIdLength
ULONG CmpDelayedCloseIndex
ULONG CmpDelayedCloseSize
BOOLEAN NTAPI CmpGetHiveName(IN PCMHIVE Hive, OUT PUNICODE_STRING HiveName)
VALUE_SEARCH_RETURN_TYPE NTAPI CmpQueryKeyValueData(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PCM_CACHED_VALUE *CachedValue, IN PCM_KEY_VALUE ValueKey, IN BOOLEAN ValueIsCached, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength, OUT PNTSTATUS Status)
UNICODE_STRING CmClassName[]
VOID NTAPI CmpLockRegistryExclusive(VOID)
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
struct _CM_KEY_HASH CM_KEY_HASH
NTSTATUS NTAPI CmpInitializeRegistryNode(IN PCONFIGURATION_COMPONENT_DATA CurrentEntry, IN HANDLE NodeHandle, OUT PHANDLE NewHandle, IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN PUSHORT DeviceIndexTable)
VOID NTAPI CmpDestroyHiveViewList(IN PCMHIVE Hive)
VOID NTAPI CmpCloseHiveFiles(IN PCMHIVE Hive)
VOID NTAPI CmpUnlockRegistry(VOID)
struct _KEY_VALUE_INFORMATION KEY_VALUE_INFORMATION
ERESOURCE CmpRegistryLock
USHORT CmpUnknownBusCount
VOID NTAPI CmpRemoveFromHiveFileList(IN PCMHIVE Hive)
struct _CM_ALLOC_PAGE CM_ALLOC_PAGE
POBJECT_TYPE CmpKeyObjectType
NTSTATUS CmpAssignSecurityDescriptor(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
struct _CACHED_CHILD_LIST CACHED_CHILD_LIST
enum _VALUE_SEARCH_RETURN_TYPE VALUE_SEARCH_RETURN_TYPE
NTSTATUS NTAPI CmpAddToHiveFileList(IN PCMHIVE Hive)
VOID NTAPI CmpLockHiveFlusherExclusive(IN PCMHIVE Hive)
struct _CM_DELAY_DEREF_KCB_ITEM CM_DELAY_DEREF_KCB_ITEM
struct _CM_KEY_HASH_TABLE_ENTRY * PCM_KEY_HASH_TABLE_ENTRY
ULONG CmDefaultLanguageIdType
VOID NTAPI CmpReportNotify(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PHHIVE Hive, IN HCELL_INDEX Cell, IN ULONG Filter)
struct _CM_DELAY_ALLOC CM_DELAY_ALLOC
struct _CM_SYSTEM_CONTROL_VECTOR CM_SYSTEM_CONTROL_VECTOR
struct _CM_KEY_CONTROL_BLOCK * PCM_KEY_CONTROL_BLOCK
BOOLEAN NTAPI CmpTestHiveFlusherLockExclusive(IN PCMHIVE Hive)
VALUE_SEARCH_RETURN_TYPE NTAPI CmpFindValueByNameFromCache(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PCUNICODE_STRING Name, OUT PCM_CACHED_VALUE **CachedValue, OUT ULONG *Index, OUT PCM_KEY_VALUE *Value, OUT BOOLEAN *ValueIsCached, OUT PHCELL_INDEX CellToRelease)
VOID NTAPI CmpAcquireTwoKcbLocksExclusiveByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
VOID NTAPI CmpFree(IN PVOID Ptr, IN ULONG Quota)
NTSTATUS NTAPI CmpInitializeMachineDependentConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
VOID NTAPI CmpInitCallback(VOID)
EX_PUSH_LOCK CmpHiveListHeadLock
NTSTATUS NTAPI CmQueryKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN KEY_INFORMATION_CLASS KeyInformationClass, IN PVOID KeyInformation, IN ULONG Length, IN PULONG ResultLength)
struct _CM_KEY_SECURITY_CACHE * PCM_KEY_SECURITY_CACHE
PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor(VOID)
LANGID PsDefaultUILanguageId
VOID NTAPI CmpInitializeCache(VOID)
struct _CACHED_CHILD_LIST * PCACHED_CHILD_LIST
LANGID PsInstallUILanguageId
EX_PUSH_LOCK CmpLoadHiveLock
VALUE_SEARCH_RETURN_TYPE NTAPI CmpGetValueListFromCache(IN PCM_KEY_CONTROL_BLOCK Kcb, OUT PCELL_DATA *CellData, OUT BOOLEAN *IndexIsCached, OUT PHCELL_INDEX ValueListToRelease)
VOID NTAPI CmpDestroySecurityCache(IN PCMHIVE Hive)
HIVE_LIST_ENTRY CmpMachineHiveList[]
VOID NTAPI CmpReleaseTwoKcbLockByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
BOOLEAN NTAPI CmInitSystem1(VOID)
struct _CM_CACHED_VALUE * PCM_CACHED_VALUE
UNICODE_STRING CmpSystemStartOptions
struct _CM_NOTIFY_BLOCK CM_NOTIFY_BLOCK
VOID NTAPI CmpLockRegistry(VOID)
VOID NTAPI CmpLockHiveFlusherShared(IN PCMHIVE Hive)
struct _CMP_MF_TYPE * PCMP_MF_TYPE
NTSTATUS NTAPI CmpParseKey(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
_VALUE_SEARCH_RETURN_TYPE
@ SearchNeedExclusiveLock
struct _CMP_MF_TYPE CMP_MF_TYPE
NTSTATUS NTAPI CmpQueryKeyName(IN PVOID Object, IN BOOLEAN HasObjectName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE AccessMode)
NTSTATUS NTAPI CmpInitializeHardwareConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
UNICODE_STRING CmSymbolicLinkValueName
VOID NTAPI CmpArmDelayedCloseTimer(VOID)
WCHAR CmInstallUILanguageId[]
VALUE_SEARCH_RETURN_TYPE NTAPI CmpGetValueKeyFromCache(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PCELL_DATA CellData, IN ULONG Index, OUT PCM_CACHED_VALUE **CachedValue, OUT PCM_KEY_VALUE *Value, IN BOOLEAN IndexIsCached, OUT BOOLEAN *ValueIsCached, OUT PHCELL_INDEX CellToRelease)
VOID NTAPI CmpCmdInit(IN BOOLEAN SetupBoot)
VOID NTAPI DelistKeyBodyFromKCB(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
KGUARDED_MUTEX CmpDelayedCloseTableLock
NTSTATUS NTAPI CmSaveMergedKeys(IN PCM_KEY_CONTROL_BLOCK HighKcb, IN PCM_KEY_CONTROL_BLOCK LowKcb, IN HANDLE FileHandle)
VOID NTAPI CmpInitializeHiveList(VOID)
CMP_MF_TYPE CmpMultifunctionTypes[]
struct _CM_KEY_SECURITY_CACHE_ENTRY CM_KEY_SECURITY_CACHE_ENTRY
BOOLEAN CmpSpecialBootCondition
struct _CM_NAME_CONTROL_BLOCK * PCM_NAME_CONTROL_BLOCK
VOID NTAPI CmpInitDelayDerefKCBEngine(VOID)
VOID NTAPI CmGetSystemControlValues(IN PVOID SystemHiveData, IN PCM_SYSTEM_CONTROL_VECTOR ControlVector)
NTSTATUS NTAPI CmpCreateLinkNode(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN PACCESS_STATE AccessState, IN UNICODE_STRING Name, IN KPROCESSOR_MODE AccessMode, IN ULONG CreateOptions, IN PCM_PARSE_CONTEXT Context, IN PCM_KEY_CONTROL_BLOCK ParentKcb, IN PULONG KcbsLocked, OUT PVOID *Object)
NTSTATUS NTAPI CmEnumerateKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, IN PVOID KeyInformation, IN ULONG Length, IN PULONG ResultLength)
PCM_KEY_HASH_TABLE_ENTRY CmpCacheTable
BOOLEAN NTAPI CmpReferenceKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
struct _CM_CELL_REMAP_BLOCK * PCM_CELL_REMAP_BLOCK
UNICODE_STRING CmTypeName[]
PCM_FULL_RESOURCE_DESCRIPTOR CmpConfigurationData
struct _CM_KEY_BODY * PCM_KEY_BODY
VOID NTAPI CmpCloseKeyObject(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
NTSTATUS NTAPI CmSetValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PUNICODE_STRING ValueName, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
struct _CM_DELAYED_CLOSE_ENTRY CM_DELAYED_CLOSE_ENTRY
struct _CM_NAME_HASH CM_NAME_HASH
BOOLEAN NTAPI CmpFileSetSize(_In_ PHHIVE RegistryHive, _In_ ULONG FileType, _In_ ULONG FileSize, _In_ ULONG OldFileSize)
ULONG NTAPI CmpEnumerateOpenSubKeys(_In_ PCM_KEY_CONTROL_BLOCK RootKcb, _In_ BOOLEAN RemoveEmptyCacheEntries, _In_ BOOLEAN DereferenceOpenedEntries)
NTSTATUS NTAPI CmFlushKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN EclusiveLock)
PCM_KEY_CONTROL_BLOCK NTAPI CmpCreateKeyControlBlock(IN PHHIVE Hive, IN HCELL_INDEX Index, IN PCM_KEY_NODE Node, IN PCM_KEY_CONTROL_BLOCK Parent, IN ULONG Flags, IN PUNICODE_STRING KeyName)
struct _CM_DELAY_ALLOC * PCM_DELAY_ALLOC
struct _CM_HASH_CACHE_STACK * PCM_HASH_CACHE_STACK
VOID NTAPI CmpShutdownWorkers(VOID)
VOID NTAPI CmpCleanUpKcbValueCache(IN PCM_KEY_CONTROL_BLOCK Kcb)
struct _CM_NAME_HASH * PCM_NAME_HASH
BOOLEAN HvShutdownComplete
VOID NTAPI CmpDereferenceKeyControlBlockWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
VOID NTAPI CmpDereferenceKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
NTSTATUS NTAPI CmpDoCreate(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN PACCESS_STATE AccessState, IN PUNICODE_STRING Name, IN KPROCESSOR_MODE AccessMode, IN PCM_PARSE_CONTEXT Context, IN PCM_KEY_CONTROL_BLOCK ParentKcb, OUT PVOID *Object)
struct _CM_DELAY_DEREF_KCB_ITEM * PCM_DELAY_DEREF_KCB_ITEM
BOOLEAN CmpNoVolatileCreates
NTSTATUS NTAPI CmpSaveBootControlSet(IN USHORT ControlSet)
ULONG CmInstallUILanguageIdLength
PUNICODE_STRING NTAPI CmpConstructName(IN PCM_KEY_CONTROL_BLOCK Kcb)
struct _CM_ALLOC_PAGE * PCM_ALLOC_PAGE
VOID NTAPI CmpFlushNotifiesOnKeyBodyList(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeld)
struct _CM_SYSTEM_CONTROL_VECTOR * PCM_SYSTEM_CONTROL_VECTOR
BOOLEAN NTAPI CmpFileWrite(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PULONG FileOffset, IN PVOID Buffer, IN SIZE_T BufferLength)
struct _CM_NAME_HASH_TABLE_ENTRY CM_NAME_HASH_TABLE_ENTRY
NTSTATUS CmiCallRegisteredCallbacks(IN REG_NOTIFY_CLASS Argument1, IN PVOID Argument2)
NTSTATUS NTAPI CmpInitializeHive(_Out_ PCMHIVE *CmHive, _In_ ULONG OperationType, _In_ ULONG HiveFlags, _In_ ULONG FileType, _In_opt_ PVOID HiveData, _In_ HANDLE Primary, _In_ HANDLE Log, _In_ HANDLE External, _In_ HANDLE Alternate, _In_opt_ PCUNICODE_STRING FileName, _In_ ULONG CheckFlags)
struct _KEY_INFORMATION KEY_INFORMATION
BOOLEAN NTAPI CmpTestRegistryLockExclusive(VOID)
VOID NTAPI CmpRemoveFromDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb)
LIST_ENTRY CmpHiveListHead
NTSTATUS NTAPI CmpDeepCopyKey(IN PHHIVE SourceHive, IN HCELL_INDEX SrcKeyCell, IN PHHIVE DestinationHive, IN HSTORAGE_TYPE StorageType, OUT PHCELL_INDEX DestKeyCell OPTIONAL)
ULONG CmpTypeCount[MaximumType+1]
struct _CM_KEY_HASH * PCM_KEY_HASH
VOID NTAPI CmpSetGlobalQuotaAllowed(VOID)
struct _CM_NOTIFY_BLOCK * PCM_NOTIFY_BLOCK
NTSTATUS NTAPI CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName, IN ULONG HiveFlags, OUT PCMHIVE *Hive, IN OUT PBOOLEAN New, IN ULONG CheckFlags)
NTSTATUS NTAPI CmQueryValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN UNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
CM_SYSTEM_CONTROL_VECTOR CmControlVector[]
VOID NTAPI CmpDeleteKeyObject(IN PVOID Object)
struct _HIVE_LIST_ENTRY * PHIVE_LIST_ENTRY
BOOLEAN ExpInTextModeSetup
struct _CM_PARSE_CONTEXT * PCM_PARSE_CONTEXT
BOOLEAN NTAPI CmpFileFlush(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PLARGE_INTEGER FileOffset, IN ULONG Length)
NTSTATUS NTAPI CmpCreateEvent(IN EVENT_TYPE EventType, OUT PHANDLE EventHandle, OUT PKEVENT *Event)
ULONG CmpConfigurationAreaSize
WCHAR CmDefaultLanguageId[]
struct _CM_INDEX_HINT_BLOCK * PCM_INDEX_HINT_BLOCK
VOID NTAPI EnlistKeyBodyWithKCB(IN PCM_KEY_BODY KeyObject, IN ULONG Flags)
PCM_NAME_HASH_TABLE_ENTRY CmpNameCacheTable
VOID NTAPI CmpInitializeDelayedCloseTable(VOID)
struct _CM_HASH_CACHE_STACK CM_HASH_CACHE_STACK
NTSTATUS NTAPI CmpCmdHiveOpen(IN POBJECT_ATTRIBUTES FileAttributes, IN PSECURITY_CLIENT_CONTEXT ImpersonationContext, IN OUT PBOOLEAN Allocate, OUT PCMHIVE *NewHive, IN ULONG CheckFlags)
VOID NTAPI CmpInitHiveViewList(IN PCMHIVE Hive)
BOOLEAN NTAPI CmpFileRead(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PULONG FileOffset, OUT PVOID Buffer, IN SIZE_T BufferLength)
NTSTATUS NTAPI CmDeleteValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN UNICODE_STRING ValueName)
VOID NTAPI CmpCleanUpSubKeyInfo(IN PCM_KEY_CONTROL_BLOCK Kcb)
struct _CM_CACHED_VALUE CM_CACHED_VALUE
VOID NTAPI CmSetLazyFlushState(IN BOOLEAN Enable)
struct _CM_INDEX_HINT_BLOCK CM_INDEX_HINT_BLOCK
NTSTATUS NTAPI CmEnumerateValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Index, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
struct _CM_DELAYED_CLOSE_ENTRY * PCM_DELAYED_CLOSE_ENTRY
VOID NTAPI CmpUnlockHiveFlusher(IN PCMHIVE Hive)
struct _CM_KEY_BODY CM_KEY_BODY
PVOID NTAPI CmpAllocateDelayItem(VOID)
NTSTATUS NTAPI CmSaveKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN HANDLE FileHandle, IN ULONG Flags)
BOOLEAN CmpForceForceFlush
VOID NTAPI CmpInitSecurityCache(IN PCMHIVE Hive)
VOID NTAPI CmpRemoveKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
BOOLEAN NTAPI CmpDoFlushAll(IN BOOLEAN ForceFlush)
BOOLEAN CmpFlushOnLockRelease
struct _CM_CACHED_VALUE_INDEX CM_CACHED_VALUE_INDEX
VOID NTAPI CmpFlushNotify(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
HANDLE CmpRegistryRootHandle
NTSTATUS NTAPI CmDeleteKey(IN PCM_KEY_BODY KeyBody)
struct _CM_KEY_SECURITY_CACHE_ENTRY * PCM_KEY_SECURITY_CACHE_ENTRY
VOID NTAPI CmShutdownSystem(VOID)
BOOLEAN CmpShareSystemHives
ULONG CmInstallUILanguageIdType
UNICODE_STRING CmpLoadOptions
PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
NTSTATUS NTAPI CmpOpenHiveFiles(IN PCUNICODE_STRING BaseName, IN PCWSTR Extension OPTIONAL, OUT PHANDLE Primary, OUT PHANDLE Log, OUT PULONG PrimaryDisposition, OUT PULONG LogDisposition, IN BOOLEAN CreateAllowed, IN BOOLEAN MarkAsSystemHive, IN BOOLEAN NoBuffering, OUT PULONG ClusterSize OPTIONAL)
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)
VOID NTAPI CmpInitCmPrivateAlloc(VOID)
PULONG NTAPI CmpBuildAndLockKcbArray(_In_ PCM_HASH_CACHE_STACK HashCacheStack, _In_ ULONG KcbLockFlags, _In_ PCM_KEY_CONTROL_BLOCK Kcb, _Inout_ PULONG OuterStackArray, _In_ ULONG TotalRemainingSubkeys, _In_ ULONG MatchRemainSubkeyLevel)
Builds an array of KCBs and locks them. Whether these KCBs are locked exclusively or in shared mode b...
NTSTATUS NTAPI CmLoadKey(IN POBJECT_ATTRIBUTES TargetKey, IN POBJECT_ATTRIBUTES SourceFile, IN ULONG Flags, IN PCM_KEY_BODY KeyBody)
NTSTATUS NTAPI CmpDestroyHive(IN PCMHIVE CmHive)
struct _CM_KEY_CONTROL_BLOCK CM_KEY_CONTROL_BLOCK
BOOLEAN NTAPI CmpTestRegistryLock(VOID)
VOID NTAPI CmpInitCmPrivateDelayAlloc(VOID)
NTSTATUS NTAPI CmUnloadKey(_In_ PCM_KEY_CONTROL_BLOCK Kcb, _In_ ULONG Flags)
struct _CM_KEY_HASH_TABLE_ENTRY CM_KEY_HASH_TABLE_ENTRY
VOID NTAPI CmpFreeKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
struct _HIVE_LIST_ENTRY HIVE_LIST_ENTRY
struct _CM_NAME_HASH_TABLE_ENTRY * PCM_NAME_HASH_TABLE_ENTRY
struct _KEY_INFORMATION * PKEY_INFORMATION
LIST_ENTRY CmiKeyObjectListHead
VOID NTAPI CmpFreeDelayItem(PVOID Entry)
struct _CM_CELL_REMAP_BLOCK CM_CELL_REMAP_BLOCK
struct _CM_PARSE_CONTEXT CM_PARSE_CONTEXT
PCM_KEY_CONTROL_BLOCK NTAPI CmpAllocateKeyControlBlock(VOID)
VALUE_SEARCH_RETURN_TYPE NTAPI CmpCompareNewValueDataAgainstKCBCache(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PUNICODE_STRING ValueName, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
struct _CM_KEY_SECURITY_CACHE CM_KEY_SECURITY_CACHE
BOOLEAN NTAPI CmpGetNextName(IN OUT PUNICODE_STRING RemainingName, OUT PUNICODE_STRING NextName, OUT PBOOLEAN LastName)
struct _CM_CACHED_VALUE_INDEX * PCM_CACHED_VALUE_INDEX
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
_Inout_opt_ PUNICODE_STRING Extension
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
enum _INTERFACE_TYPE INTERFACE_TYPE
_In_ PKSNODE_CREATE _In_ ACCESS_MASK _Out_ PHANDLE NodeHandle
static IDispatch External
DWORD * PSECURITY_INFORMATION
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
enum _KEY_VALUE_INFORMATION_CLASS KEY_VALUE_INFORMATION_CLASS
enum _KEY_INFORMATION_CLASS KEY_INFORMATION_CLASS
_In_ ULONG _In_ ULONG _In_ ULONG Length
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
enum _EVENT_TYPE EVENT_TYPE
PULONG MinorVersion OPTIONAL
base of all file and directory entries
struct _CM_KEY_CONTROL_BLOCK * RealKcb
union _CM_CACHED_VALUE_INDEX::@1773 Data
LIST_ENTRY DelayedLRUList
PCM_KEY_CONTROL_BLOCK KeyControlBlock
PCM_KEY_CONTROL_BLOCK Kcb
PCM_KEY_CONTROL_BLOCK Kcb
ULONG HashKey[ANYSIZE_ARRAY]
struct _CM_NOTIFY_BLOCK * NotifyBlock
struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock
LIST_ENTRY KeyBodyListHead
USHORT KcbMaxValueNameLen
PCM_NAME_CONTROL_BLOCK NameBlock
PCM_INDEX_HINT_BLOCK IndexHint
struct _CM_KEY_CONTROL_BLOCK * ParentKcb
LARGE_INTEGER KcbLastWriteTime
PCM_KEY_BODY KeyBodyArray[4]
ULONG KcbVirtControlFlags
CACHED_CHILD_LIST ValueCache
PCM_KEY_SECURITY_CACHE CachedSecurity
struct _CM_KEY_HASH * NextHash
PCM_KEY_SECURITY_CACHE CachedSecurity
SECURITY_DESCRIPTOR_RELATIVE Descriptor
struct _CM_NAME_HASH * NextHash
PCM_KEY_CONTROL_BLOCK KeyControlBlock
CM_KEY_REFERENCE ChildHive
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Must_inspect_result_ _In_ WDFCMRESLIST List
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
_Must_inspect_result_ _In_ ULONG Flags
enum _REG_NOTIFY_CLASS REG_NOTIFY_CLASS
_IRQL_requires_same_ _In_opt_ PVOID Argument1
_In_opt_ PALLOCATE_FUNCTION Allocate
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
_Out_ PHANDLE EventHandle
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass