63 Status = ZwCreateKey(&LinkKeyHandle,
72 DPRINT1(
"CM: CmpLinkKeyToHive: couldn't create %S, Status = 0x%lx\n",
80 DPRINT1(
"CM: CmpLinkKeyToHive: %S already exists!\n", LinkKeyName);
87 Status = ZwSetValueKey(LinkKeyHandle,
99 DPRINT1(
"CM: CmpLinkKeyToHive: couldn't create symbolic link for %S, Status = 0x%lx\n",
119 PostOperationInfo.
Object = KeyBody;
120 KeyHandleCloseInfo.
Object = KeyBody;
122 &KeyHandleCloseInfo);
169 if (SystemHandleCount > 1)
return;
258 ObjectNameInfo->Name.Buffer = (
PWCHAR)(ObjectNameInfo + 1);
259 ObjectNameInfo->Name.MaximumLength =
KeyName->Length;
260 ObjectNameInfo->Name.Length =
KeyName->Length;
292 ULONG HiveDisposition, LogDisposition;
408 L"\\REGISTRY\\MACHINE\\SYSTEM\\CurrentControlSet\\" 461 DPRINT(
"CmpCreateHardwareProfile()\n");
479 DPRINT1(
"Creating the Hardware Profile key failed\n");
502 DPRINT1(
"Creating the Hardware Profile\\0000 key failed\n");
516 DPRINT(
"CmpCreateHardwareProfile() done\n");
531 CHAR ValueInfoBuffer[128];
533 WCHAR UnicodeBuffer[128];
539 ULONG ControlSet, HwProfile;
546 if (LoaderBlock->RegistryBase ==
NULL)
550 L"\\Registry\\Machine\\System\\ControlSet001");
565 DPRINT1(
"Failed to create ControlSet001 key: 0x%lx\n",
Status);
573 DPRINT1(
"Failed to create Hardware profile keys: 0x%lx\n",
Status);
601 sizeof(ValueInfoBuffer),
605 DPRINT1(
"Failed to open the Current value: 0x%lx\n",
Status);
616 L"\\Registry\\Machine\\System\\CurrentControlSet");
637 L"\\Registry\\Machine\\System\\ControlSet%03ld",
671 if (LoaderBlock->RegistryBase ==
NULL)
683 sizeof(ValueInfoBuffer),
702 L"\\Registry\\Machine\\System\\CurrentControlSet" 703 L"\\Hardware Profiles");
719 L"%04ld", HwProfile);
739 LoaderExtension = LoaderBlock->Extension;
742 DPRINT(
"ReactOS doesn't support NTLDR Profiles yet!\n");
747 L"\\Registry\\Machine\\System\\CurrentControlSet\\" 748 L"Hardware Profiles\\Current");
768 L"\\Registry\\Machine\\System\\CurrentControlSet\\" 769 L"Hardware Profiles\\%04ld",
786 if (SelectHandle)
NtClose(SelectHandle);
788 if (ConfigHandle)
NtClose(ConfigHandle);
789 if (ProfileHandle)
NtClose(ProfileHandle);
790 if (ParentHandle)
NtClose(ParentHandle);
792 DPRINT(
"CmpCreateControlSet() done\n");
841 (
PVOID)&ParseContext,
846 RegistryHive->Hive.DirtyFlag =
FALSE;
906 HiveBase = LoaderBlock->RegistryBase;
925 L"\\SystemRoot\\System32\\Config\\SYSTEM");
993 RtlZeroMemory(&ObjectTypeInitializer,
sizeof(ObjectTypeInitializer));
995 ObjectTypeInitializer.
Length =
sizeof(ObjectTypeInitializer);
1034 Hive->BaseBlock->RootCell = *
Index;
1036 if (!KeyCell)
return FALSE;
1114 if (!KeyCell)
return FALSE;
1131 RootKey->KeyControlBlock = Kcb;
1177 ConfigPath =
L"\\SystemRoot\\System32\\Config\\";
1181 ConfigPath =
L"\\SystemRoot\\";
1184 DPRINT1(
"CmpGetRegistryPath: ConfigPath = '%S'\n", ConfigPath);
1192 CmpLoadHiveThread(
IN PVOID StartContext)
1194 WCHAR FileBuffer[64], RegBuffer[64];
1203 PVOID ErrorParameters;
1214 RtlInitEmptyUnicodeString(&
FileName, FileBuffer,
sizeof(FileBuffer));
1215 RtlInitEmptyUnicodeString(&RegName, RegBuffer,
sizeof(RegBuffer));
1285 &PrimaryDisposition,
1286 &SecondaryDisposition,
1320 DPRINT1(
"FIXME: Support for CmHive->Hive.Cluster (%lu) != ClusterSize (%lu) is unimplemented!\n",
1360 WCHAR FileBuffer[64], RegBuffer[64];
1374 RtlInitEmptyUnicodeString(&
FileName, FileBuffer,
sizeof(FileBuffer));
1375 RtlInitEmptyUnicodeString(&RegName, RegBuffer,
sizeof(RegBuffer));
1385 RegStart = RegName.
Length;
1454 RegName.
Length = RegStart;
1499 L"\\Registry\\Machine\\SAM\\SAM");
1504 L"\\Registry\\User\\.Default");
1584 KeBugCheckEx(CONFIG_INITIALIZATION_FAILED, 1, 3, 0, 0);
1643 KeBugCheckEx(CONFIG_INITIALIZATION_FAILED, 1, 7, 0, 0);
1735 NextEntry = DriverList->
Flink;
1736 while (NextEntry != DriverList)
1742 OldEntry = NextEntry;
1743 NextEntry = NextEntry->
Flink;
1824 Hive = KeyBody->KeyControlBlock->KeyHive;
1825 RootCell = KeyBody->KeyControlBlock->KeyCell;
1843 for (
i = 0, NextEntry = DriverList.
Flink;
1844 NextEntry != &DriverList;
1845 i++, NextEntry = NextEntry->
Flink);
1849 if (!ServicePath)
KeBugCheckEx(CONFIG_INITIALIZATION_FAILED, 2, 1, 0, 0);
1852 for (
i = 0, NextEntry = DriverList.
Flink;
1853 NextEntry != &DriverList;
1854 i++, NextEntry = NextEntry->
Flink)
1861 if (!ServicePath[
i])
1863 KeBugCheckEx(CONFIG_INITIALIZATION_FAILED, 2, 1, 0, 0);
1872 KeBugCheckEx(CONFIG_INITIALIZATION_FAILED, 2, 1, 0, 0);
1877 ServicePath[
i] =
NULL;
2024 ULONG Index1, Index2;
2034 if (Index1 < Index2)
2053 ULONG Index1, Index2;
2065 if (Index1 < Index2)
2076 if (Index1 != Index2)
2108 ListEntry = ListEntry->
Flink;
2315 if (CurrentVersionKeyHandle !=
NULL)
2316 NtClose(CurrentVersionKeyHandle);
2318 if (WindowsNtKeyHandle !=
NULL)
2321 if (MicrosoftKeyHandle !=
NULL)
2324 if (SoftwareKeyHandle !=
NULL)
#define KeQuerySystemTime(t)
NTSTATUS NTAPI ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN OUT PVOID ParseContext, OUT PHANDLE Handle)
VOID NTAPI CmpUnlockHiveFlusher(IN PCMHIVE Hive)
VOID NTAPI CmpInitializeHiveList(VOID)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
NTSYSAPI VOID NTAPI RtlGetCallersAddress(_Out_ PVOID *CallersAddress, _Out_ PVOID *CallersCaller)
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
VOID NTAPI CmpShutdownWorkers(VOID)
WCHAR Name[ANYSIZE_ARRAY]
VOID NTAPI CmpInitCmPrivateDelayAlloc(VOID)
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
#define THREAD_ALL_ACCESS
BOOLEAN NTAPI CmpResolveDriverDependencies(IN PLIST_ENTRY DriverListHead)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOT_DRIVER_LIST_ENTRY ListEntry
NTSTATUS NTAPI NtCreateKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL)
NTSTATUS NTAPI CmpSecurityMethod(IN PVOID ObjectBody, IN SECURITY_OPERATION_CODE OperationCode, IN PSECURITY_INFORMATION SecurityInformation, IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG BufferLength, IN OUT PSECURITY_DESCRIPTOR *OldSecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
#define STATUS_INFO_LENGTH_MISMATCH
UNICODE_STRING NtSystemRoot
BOOLEAN CmpFlushOnLockRelease
PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
#define OBJ_CASE_INSENSITIVE
NTSTATUS NTAPI NtRaiseHardError(IN NTSTATUS ErrorStatus, IN ULONG NumberOfParameters, IN ULONG UnicodeStringParameterMask, IN PULONG_PTR Parameters, IN ULONG ValidResponseOptions, OUT PULONG Response)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
BOOLEAN NTAPI CmpTestHiveFlusherLockExclusive(IN PCMHIVE Hive)
IN BOOLEAN OUT PSTR Buffer
_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
LIST_ENTRY CmpHiveListHead
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define CMP_ASSERT_REGISTRY_LOCK()
#define CM_KEY_NODE_SIGNATURE
LONG CmpLoadWorkerIncrement
BOOL WINAPI EndPath(_In_ HDC)
#define HvReleaseCell(h, c)
NTSTATUS NTAPI CmpCreateObjectTypes(VOID)
#define CM_NUMBER_OF_MACHINE_HIVES
PEPROCESS CmpSystemProcess
NTSTATUS NTAPI CmpLinkHiveToMaster(IN PUNICODE_STRING LinkName, IN HANDLE RootDirectory, IN PCMHIVE RegistryHive, IN BOOLEAN Allocate, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
BOOLEAN NTAPI CmpTestRegistryLock(VOID)
NTSTATUS ExInitializeResourceLite(PULONG res)
HIVE_LIST_ENTRY CmpMachineHiveList[]
HCELL_INDEX CMAPI HvAllocateCell(PHHIVE RegistryHive, ULONG Size, HSTORAGE_TYPE Storage, IN HCELL_INDEX Vicinity)
BOOLEAN NTAPI CmInitSystem1(VOID)
VOID NTAPI CmpDelayDerefKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
struct _CM_NOTIFY_BLOCK * NotifyBlock
FORCEINLINE VOID CmpAcquireKcbLockExclusiveByKey(IN ULONG ConvKey)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
#define OBJ_KERNEL_HANDLE
#define CmpAcquireKcbLockShared(k)
VOID NTAPI CmpCloseKeyObject(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID NTAPI CmpReleaseTwoKcbLockByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
#define REG_OPTION_CREATE_LINK
static int Link(const char **args)
_In_opt_ PALLOCATE_FUNCTION Allocate
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
VOID NTAPI EnlistKeyBodyWithKCB(IN PCM_KEY_BODY KeyBody, IN ULONG Flags)
_In_ UINT _In_ UINT BytesToCopy
PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor(VOID)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
ERESOURCE CmpRegistryLock
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
VOID NTAPI CmpInitializeCache(VOID)
PVOID CmpRegistryLockCallerCaller
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI CmpCloseHiveFiles(IN PCMHIVE Hive)
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
VOID NTAPI CmpInitCallback(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)
CM_KEY_REFERENCE ChildHive
#define CMP_ASSERT_FLUSH_LOCK(h)
#define OBJ_NAME_PATH_SEPARATOR
VOID NTAPI CmpFreeDriverList(IN PHHIVE Hive, IN PLIST_ENTRY DriverList)
BOOLEAN NTAPI CmpInitializeSystemHive(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
PVOID CMAPI HvGetCell(PHHIVE RegistryHive, HCELL_INDEX CellOffset)
LIST_ENTRY CmpSelfHealQueueListHead
#define PsGetCurrentProcess
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)
HANDLE FileHandles[HFILE_TYPE_MAX]
#define EXCEPTION_EXECUTE_HANDLER
HCELL_INDEX SubKeyLists[HTYPE_COUNT]
struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION
KEVENT CmpLoadWorkerEvent
UNICODE_STRING FileFullPath
struct _CM_KEY_NODE * PCM_KEY_NODE
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
DUAL Storage[HTYPE_COUNT]
VOID NTAPI CmpLockRegistryExclusive(VOID)
VOID NTAPI CmpInitCmPrivateAlloc(VOID)
#define ExInitializePushLock
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
POBJECT_TYPE CmpKeyObjectType
#define STATUS_KEY_DELETED
#define REG_CREATED_NEW_KEY
FORCEINLINE VOID CmpReleaseKcbLock(PCM_KEY_CONTROL_BLOCK Kcb)
BOOLEAN NTAPI CmpCreateRootNode(IN PHHIVE Hive, IN PCWSTR Name, OUT PHCELL_INDEX Index)
OB_CLOSE_METHOD CloseProcedure
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
PLOADER_PARAMETER_BLOCK KeLoaderBlock
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
NTSTATUS NTAPI CmpQueryKeyName(IN PVOID ObjectBody, IN BOOLEAN HasName, IN OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE PreviousMode)
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
#define ExIsResourceAcquiredShared
FORCEINLINE VOID CmpReleaseKcbLockByKey(ULONG ConvKey)
struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock
NTSYSAPI NTSTATUS NTAPI NtDeleteValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName)
NTSTATUS NTAPI CmpCreateControlSet(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
struct _LIST_ENTRY * Flink
NTSYSAPI NTSTATUS NTAPI RtlIntegerToUnicodeString(ULONG Value, ULONG Base, PUNICODE_STRING String)
#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
_In_ KPROCESSOR_MODE PreviousMode
NTSTATUS NTAPI CmpInitializeMachineDependentConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
USHORT NTAPI CmpCopyName(IN PHHIVE Hive, OUT PWCHAR Destination, IN PUNICODE_STRING Source)
#define GET_HASH_ENTRY(Table, ConvKey)
BOOLEAN NTAPI CmpCreateRegistryRoot(VOID)
#define NT_SUCCESS(StatCode)
NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int, const UNICODE_STRING *, UNICODE_STRING *)
VOID NTAPI CmpFree(_In_ PVOID Ptr, _In_ ULONG Quota)
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
_In_ WDFCOLLECTION _In_ ULONG Index
ULONG SubKeyCounts[HTYPE_COUNT]
BOOLEAN NTAPI CmpSortDriverList(IN PHHIVE Hive, IN HCELL_INDEX ControlSet, IN PLIST_ENTRY DriverListHead)
VOID NTAPI CmpUnlockRegistry(VOID)
#define CMP_ASSERT_EXCLUSIVE_REGISTRY_LOCK()
PUNICODE_STRING NTAPI CmpConstructName(IN PCM_KEY_CONTROL_BLOCK Kcb)
#define ObDereferenceObject
BOOLEAN CmpSpecialBootCondition
OB_PARSE_METHOD ParseProcedure
_In_ GUID _In_ PVOID ValueData
VOID NTAPI CmShutdownSystem(VOID)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
struct _CM_KEY_BODY CM_KEY_BODY
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
PCM_KEY_HASH_TABLE_ENTRY CmpCacheTable
#define ExAllocatePoolWithTag(hernya, size, tag)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
#define STATUS_CANNOT_LOAD_REGISTRY_FILE
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
USHORT NTAPI CmpNameSize(IN PHHIVE Hive, IN PUNICODE_STRING Name)
#define ExAllocatePool(type, size)
UNICODE_STRING CmCSDVersionString
NTSTATUS NTAPI CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName, IN ULONG HiveFlags, OUT PCMHIVE *Hive, IN OUT PBOOLEAN New, IN ULONG CheckFlags)
#define KeEnterCriticalRegion()
UNICODE_STRING CmVersionString
LARGE_INTEGER LastWriteTime
#define GET_HASH_INDEX(ConvKey)
static const WCHAR Cleanup[]
HCELL_INDEX NTAPI CmpFindControlSet(IN PHHIVE SystemHive, IN HCELL_INDEX RootCell, IN PUNICODE_STRING SelectKeyName, OUT PBOOLEAN AutoSelect)
EX_PUSH_LOCK CmpLoadHiveLock
VOID NTAPI CmpLockHiveFlusherShared(IN PCMHIVE Hive)
NTSTATUS NTAPI CmpInitializeHive(OUT PCMHIVE *CmHive, IN ULONG OperationType, IN ULONG HiveFlags, IN ULONG FileType, IN PVOID HiveData OPTIONAL, IN HANDLE Primary, IN HANDLE Log, IN HANDLE External, IN PCUNICODE_STRING FileName OPTIONAL, IN ULONG CheckFlags)
static PCWSTR CmpGetRegistryPath(VOID)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
VOID NTAPI CmpDeleteKeyObject(PVOID DeletedObject)
UNICODE_STRING CmSymbolicLinkValueName
ULONG DefaultPagedPoolCharge
static NTSTATUS CmpCreateHardwareProfile(HANDLE ControlSetHandle)
BOOLEAN NTAPI ExAcquireSharedStarveExclusive(IN PERESOURCE Resource, IN BOOLEAN Wait)
struct _FileName FileName
BOOLEAN ExpInTextModeSetup
VOID FASTCALL KeInitializeGuardedMutex(OUT PKGUARDED_MUTEX GuardedMutex)
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
UNICODE_STRING RegistryPath
EX_PUSH_LOCK CmpHiveListHeadLock
#define KeLeaveCriticalRegion()
#define KeInitializeEvent(pEvt, foo, foo2)
GENERIC_MAPPING GenericMapping
#define InterlockedIncrement
DRIVER_INITIALIZE DriverEntry
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define HFILE_TYPE_PRIMARY
BOOLEAN CmpNoVolatileCreates
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
#define InitializeListHead(ListHead)
OB_SECURITY_METHOD SecurityProcedure
NTSTATUS NTAPI PsTerminateSystemThread(IN NTSTATUS ExitStatus)
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define FIELD_OFFSET(t, f)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
HANDLE NTAPI PsGetCurrentProcessId(VOID)
NTSYSAPI NTSTATUS NTAPI NtSetValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
VOID NTAPI CmpLockHiveFlusherExclusive(IN PCMHIVE Hive)
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
BOOLEAN HvShutdownComplete
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
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)
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
BOOLEAN NTAPI CmpDoFlushAll(IN BOOLEAN ForceFlush)
PVOID CmpRegistryLockCaller
OB_QUERYNAME_METHOD QueryNameProcedure
BOOLEAN NTAPI CmpTestRegistryLockExclusive(VOID)
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
VOID NTAPI DelistKeyBodyFromKCB(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
_In_ FLT_SET_CONTEXT_OPERATION Operation
KGUARDED_MUTEX CmpSelfHealQueueLock
#define InitializeObjectAttributes(p, n, a, r, s)
#define RtlCopyMemory(Destination, Source, Length)
NTSTATUS CmiCallRegisteredCallbacks(IN REG_NOTIFY_CLASS Argument1, IN PVOID Argument2)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
VOID NTAPI CmpLazyFlush(VOID)
#define _SEH2_EXCEPT(...)
HANDLE CmpRegistryRootHandle
#define ExFreePoolWithTag(_P, _T)
#define REG_OPTION_VOLATILE
#define _SEH2_GetExceptionCode()
VOID NTAPI CmpSetVersionData(VOID)
_In_ UINT _Out_ PNDIS_HANDLE LogHandle
#define KeGetCurrentThread
_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
struct _CM_KEY_BODY * PCM_KEY_BODY
OB_DELETE_METHOD DeleteProcedure
BOOLEAN NTAPI CmpLinkKeyToHive(_In_z_ PCWSTR LinkKeyName, _In_z_ PCWSTR TargetKeyName)
VOID NTAPI CmpLockRegistry(VOID)
#define KEY_CREATE_SUB_KEY
VOID NTAPI CmpInitDelayDerefKCBEngine(VOID)
#define CMP_ASSERT_REGISTRY_LOCK_OR_LOADING(h)
NTSTATUS NTAPI CmpSetSystemValues(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
NTSTATUS NTAPI CmpInitializeHardwareConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
VOID NTAPI CmpAcquireTwoKcbLocksExclusiveByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
_Function_class_(KSTART_ROUTINE)
UNICODE_STRING CmpLoadOptions
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
struct _KEY_VALUE_FULL_INFORMATION * PKEY_VALUE_FULL_INFORMATION
NTSTATUS NTAPI CmpAddToHiveFileList(IN PCMHIVE Hive)
BOOLEAN NTAPI CmpFindDrivers(IN PHHIVE Hive, IN HCELL_INDEX ControlSet, IN SERVICE_LOAD_TYPE LoadType, IN PWCHAR BootFileSystem OPTIONAL, IN PLIST_ENTRY DriverListHead)
LONG CmpFlushStarveWriters
#define RTL_CONSTANT_STRING(s)
BOOLEAN CmpShareSystemHives
PULONG MinorVersion OPTIONAL