96 DPRINT1(
"CmpFileSetSize() unimplemented\n");
122 DPRINT(
"Hive 0x%p\n", Hive);
179 Node->Security = SecurityCell;
189 Security->
Flink = Security->
Blink = SecurityCell;
234 if (NewKeyCell ==
NULL)
243 NewKeyCell->
Parent = ParentKeyCellOffset;
292 *pNKBOffset = NKBOffset;
316 if (!
CmpAddSubKey(&RegistryHive->Hive, ParentKeyCellOffset, NKBOffset))
343 *pBlockOffset = NKBOffset;
374 if (NewValueCell ==
NULL)
376 HvFreeCell(&RegistryHive->Hive, NewValueCellOffset);
394 NewValueCell->
Flags = 0;
397 NewValueCell->
Type = 0;
404 if (
Parent->ValueList.Count)
427 *pValueCell = NewValueCell;
428 *pValueCellOffset = NewValueCellOffset;
#define KeQuerySystemTime(t)
#define CM_KEY_VALUE_SIGNATURE
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
WCHAR Name[ANYSIZE_ARRAY]
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
BOOLEAN NTAPI CmpAddSubKey(IN PHHIVE Hive, IN HCELL_INDEX Parent, IN HCELL_INDEX Child)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ PNDIS_STRING SubKeyName
static BOOLEAN NTAPI CmpFileRead(IN PHHIVE RegistryHive, IN ULONG FileType, IN PULONG FileOffset, OUT PVOID Buffer, IN SIZE_T BufferLength)
#define CM_KEY_SECURITY_SIGNATURE
#define CM_KEY_NODE_SIGNATURE
NTSTATUS CMAPI HvInitialize(PHHIVE RegistryHive, ULONG OperationType, ULONG HiveFlags, ULONG FileType, PVOID HiveData OPTIONAL, PALLOCATE_ROUTINE Allocate, PFREE_ROUTINE Free, PFILE_SET_SIZE_ROUTINE FileSetSize, PFILE_WRITE_ROUTINE FileWrite, PFILE_READ_ROUTINE FileRead, PFILE_FLUSH_ROUTINE FileFlush, ULONG Cluster OPTIONAL, PCUNICODE_STRING FileName OPTIONAL)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
LIST_ENTRY CmiHiveListHead
#define VERIFY_KEY_CELL(key)
static NTSTATUS CmiCreateSubKey(IN PCMHIVE RegistryHive, IN HCELL_INDEX ParentKeyCellOffset, IN PCUNICODE_STRING SubKeyName, IN BOOLEAN VolatileKey, OUT HCELL_INDEX *pNKBOffset)
SECURITY_DESCRIPTOR_RELATIVE Descriptor
IN PVOID IN PVOID IN USHORT IN USHORT Size
HCELL_INDEX CMAPI HvAllocateCell(PHHIVE RegistryHive, ULONG Size, HSTORAGE_TYPE Storage, IN HCELL_INDEX Vicinity)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical 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
#define InsertTailList(ListHead, Entry)
_Check_return_opt_ _CRTIMP size_t __cdecl fwrite(_In_reads_bytes_(_Size *_Count) const void *_Str, _In_ size_t _Size, _In_ size_t _Count, _Inout_ FILE *_File)
NTSTATUS NTAPI CmpAddValueToList(IN PHHIVE Hive, IN HCELL_INDEX ValueCell, IN ULONG Index, IN HSTORAGE_TYPE StorageType, IN OUT PCHILD_LIST ChildList)
#define RtlMoveMemory(Destination, Source, Length)
struct _CM_KEY_SECURITY * PCM_KEY_SECURITY
#define HvGetCell(Hive, Cell)
USHORT NTAPI CmpCopyName(IN PHHIVE Hive, OUT PWCHAR Destination, IN PCUNICODE_STRING Source)
BOOLEAN NTAPI CmpFreeValue(IN PHHIVE Hive, IN HCELL_INDEX Cell)
USHORT NTAPI CmpNameSize(IN PHHIVE Hive, IN PCUNICODE_STRING Name)
NTSTATUS CmiAddValueKey(IN PCMHIVE RegistryHive, IN PCM_KEY_NODE Parent, IN ULONG ChildIndex, IN PCUNICODE_STRING ValueName, OUT PCM_KEY_VALUE *pValueCell, OUT HCELL_INDEX *pValueCellOffset)
_Check_return_opt_ _CRTIMP size_t __cdecl fread(_Out_writes_bytes_(_ElementSize *_Count) void *_DstBuf, _In_ size_t _ElementSize, _In_ size_t _Count, _Inout_ FILE *_File)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
NTSTATUS CmiCreateSecurityKey(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN PUCHAR Descriptor, IN ULONG DescriptorLength)
#define OBJ_NAME_PATH_SEPARATOR
static BOOLEAN NTAPI CmpFileFlush(IN PHHIVE RegistryHive, IN ULONG FileType, PLARGE_INTEGER FileOffset, ULONG Length)
WCHAR Name[ANYSIZE_ARRAY]
HANDLE FileHandles[HFILE_TYPE_MAX]
HCELL_INDEX SubKeyLists[HTYPE_COUNT]
struct _CM_KEY_NODE * PCM_KEY_NODE
_Check_return_opt_ _CRTIMP int __cdecl fseek(_Inout_ FILE *_File, _In_ long _Offset, _In_ int _Origin)
VOID CMAPI HvFree(PHHIVE RegistryHive)
BOOLEAN CMAPI CmCreateRootNode(PHHIVE Hive, PCWSTR Name)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
#define NT_SUCCESS(StatCode)
ULONG SubKeyCounts[HTYPE_COUNT]
VOID NTAPI CmpFree(IN PVOID Ptr, IN ULONG Quota)
BOOLEAN CMAPI HvMarkCellDirty(PHHIVE RegistryHive, HCELL_INDEX CellOffset, BOOLEAN HoldingLock)
#define STATUS_UNSUCCESSFUL
VOID CMAPI HvFreeCell(PHHIVE RegistryHive, HCELL_INDEX CellOffset)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
LARGE_INTEGER LastWriteTime
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
static BOOLEAN NTAPI CmpFileSetSize(IN PHHIVE RegistryHive, IN ULONG FileType, IN ULONG FileSize, IN ULONG OldFileSize)
#define HvReleaseCell(Hive, Cell)
static BOOLEAN NTAPI CmpFileWrite(IN PHHIVE RegistryHive, IN ULONG FileType, IN PULONG FileOffset, IN PVOID Buffer, IN SIZE_T BufferLength)
#define HFILE_TYPE_PRIMARY
_Check_return_opt_ _CRTIMP int __cdecl fflush(_Inout_opt_ FILE *_File)
struct _CM_KEY_VALUE * PCM_KEY_VALUE
_In_ PFCB _In_ LONGLONG FileOffset
#define FIELD_OFFSET(t, f)
NTSTATUS CmiInitializeHive(IN OUT PCMHIVE Hive, IN PCWSTR Name)
#define RtlZeroMemory(Destination, Length)
NTSTATUS CmiAddSubKey(IN PCMHIVE RegistryHive, IN HCELL_INDEX ParentKeyCellOffset, IN PCUNICODE_STRING SubKeyName, IN BOOLEAN VolatileKey, OUT HCELL_INDEX *pBlockOffset)
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)