ReactOS 0.4.15-dev-6054-gbddd8b0
cmlib.h
Go to the documentation of this file.
1/*
2 * PROJECT: Registry manipulation library
3 * LICENSE: GPL - See COPYING in the top level directory
4 * COPYRIGHT: Copyright 2005 Filip Navara <navaraf@reactos.org>
5 * Copyright 2001 - 2005 Eric Kohl
6 */
7
8#ifndef _CMLIB_H_
9#define _CMLIB_H_
10
11//
12// Debug support switch
13//
14#define _CMLIB_DEBUG_ 1
15
16#ifdef CMLIB_HOST
17 #include <typedefs.h>
18 #include <stdio.h>
19 #include <string.h>
20
21 // NTDDI_xxx versions we allude to in the library (see psdk/sdkddkver.h)
22 #define NTDDI_WS03SP4 0x05020400
23 #define NTDDI_WIN6 0x06000000
24 #define NTDDI_LONGHORN NTDDI_WIN6
25 #define NTDDI_VISTA NTDDI_WIN6
26 #define NTDDI_WIN7 0x06010000
27
28 #define NTDDI_VERSION NTDDI_WS03SP4 // This is the ReactOS NT kernel version
29
30 /* C_ASSERT Definition */
31 #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1]
32
33 #ifdef _WIN32
34 #define strncasecmp _strnicmp
35 #define strcasecmp _stricmp
36 #endif // _WIN32
37
38 #if (!defined(_MSC_VER) || (_MSC_VER < 1500))
39 #define _In_
40 #define _Out_
41 #define _Inout_
42 #define _In_opt_
43 #define _In_range_(x, y)
44 #endif
45
46 #define __drv_aliasesMem
47
48 #ifndef min
49 #define min(a, b) (((a) < (b)) ? (a) : (b))
50 #endif
51
52 // #ifndef max
53 // #define max(a, b) (((a) > (b)) ? (a) : (b))
54 // #endif
55
56 // Definitions copied from <ntstatus.h>
57 // We only want to include host headers, so we define them manually
58 #define STATUS_SUCCESS ((NTSTATUS)0x00000000)
59 #define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002)
60 #define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017)
61 #define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009A)
62 #define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014C)
63 #define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015C)
64 #define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009)
65
66 #define REG_OPTION_VOLATILE 1
67 #define OBJ_CASE_INSENSITIVE 0x00000040L
68 #define USHORT_MAX USHRT_MAX
69
70 #define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\')
71 #define UNICODE_NULL ((WCHAR)0)
72
77
80 IN PCUNICODE_STRING String1,
83
84 // FIXME: DECLSPEC_NORETURN
85 VOID
86 NTAPI
88 IN ULONG BugCheckCode,
89 IN ULONG_PTR BugCheckParameter1,
90 IN ULONG_PTR BugCheckParameter2,
91 IN ULONG_PTR BugCheckParameter3,
92 IN ULONG_PTR BugCheckParameter4);
93
96 OUT PLARGE_INTEGER CurrentTime);
97
100 IN WCHAR Source);
101
102 VOID NTAPI
104 IN PRTL_BITMAP BitMapHeader,
105 IN PULONG BitMapBuffer,
106 IN ULONG SizeOfBitMap);
107
110 IN PRTL_BITMAP BitMapHeader,
113
114 VOID NTAPI
116 IN PRTL_BITMAP BitMapHeader,
118 IN ULONG NumberToSet);
119
120 VOID NTAPI
122 IN PRTL_BITMAP BitMapHeader);
123
124 #define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP) / 32]) >> ((BP) % 32)) & 0x1)
125 #define UNREFERENCED_PARAMETER(P) ((void)(P))
126
127 #define PKTHREAD PVOID
128 #define PKGUARDED_MUTEX PVOID
129 #define PERESOURCE PVOID
130 #define PFILE_OBJECT PVOID
131 #define PKEVENT PVOID
132 #define PWORK_QUEUE_ITEM PVOID
133 #define EX_PUSH_LOCK PULONG_PTR
134
135 // Definitions copied from <ntifs.h>
136 // We only want to include host headers, so we define them manually
137
139
140 typedef struct _SECURITY_DESCRIPTOR_RELATIVE
141 {
143 UCHAR Sbz1;
145 ULONG Owner;
146 ULONG Group;
147 ULONG Sacl;
148 ULONG Dacl;
150
151 #define CMLTRACE(x, ...)
152 #undef PAGED_CODE
153 #define PAGED_CODE()
154 #define REGISTRY_ERROR ((ULONG)0x00000051L)
155
156#else
157
158 //
159 // Debug/Tracing support
160 //
161 #if _CMLIB_DEBUG_
162 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
163 #define CMLTRACE DbgPrintEx
164 #else
165 #define CMLTRACE(x, ...) \
166 if (x & CmlibTraceLevel) DbgPrint(__VA_ARGS__)
167 #endif
168 #else
169 #define CMLTRACE(x, ...) DPRINT(__VA_ARGS__)
170 #endif
171
172 #include <ntdef.h>
173 #include <ntifs.h>
174 #include <bugcodes.h>
175
176 /* Prevent inclusion of Windows headers through <wine/unicode.h> */
177 #define _WINDEF_
178 #define _WINBASE_
179 #define _WINNLS_
180#endif
181
182
183//
184// These define the Debug Masks Supported
185//
186#define CMLIB_HCELL_DEBUG 0x01
187
188#ifndef ROUND_UP
189#define ROUND_UP(a,b) ((((a)+(b)-1)/(b))*(b))
190#define ROUND_DOWN(a,b) (((a)/(b))*(b))
191#endif
192
193//
194// PAGE_SIZE definition
195//
196#ifndef PAGE_SIZE
197#if defined(TARGET_i386) || defined(TARGET_amd64) || \
198 defined(TARGET_arm) || defined(TARGET_arm64)
199#define PAGE_SIZE 0x1000
200#else
201#error Local PAGE_SIZE definition required when built as host
202#endif
203#endif
204
205#define TAG_CM ' MC'
206#define TAG_KCB 'bkMC'
207#define TAG_CMHIVE 'vHMC'
208#define TAG_CMSD 'DSMC'
209
210#define CMAPI NTAPI
211
212#include <wine/unicode.h>
213#include <wchar.h>
214#include "hivedata.h"
215#include "cmdata.h"
216
217/* Forward declarations */
221
222// See ntoskrnl/include/internal/cm.h
223#define CMP_SECURITY_HASH_LISTS 64
224
225//
226// Use Count Log and Entry
227//
229{
233
234typedef struct _CM_USE_COUNT_LOG
235{
240
241//
242// Configuration Manager Hive Structure
243//
244typedef struct _CMHIVE
245{
289
290typedef struct _HV_HIVE_CELL_PAIR
291{
295
296#define STATIC_CELL_PAIR_COUNT 4
297typedef struct _HV_TRACK_CELL_REF
298{
305
307
308//
309// Hack since big keys are not yet supported
310//
311#define ASSERT_VALUE_BIG(h, s) \
312 ASSERTMSG("Big keys not supported!\n", !CmpIsKeyValueBig(h, s));
313
314//
315// Returns whether or not this is a small valued key
316//
317static inline
321{
322 /* Check if the length has the special size value */
324 {
325 /* It does, so this is a small key: return the real length */
326 *RealLength = Length - CM_KEY_VALUE_SPECIAL_SIZE;
327 return TRUE;
328 }
329
330 /* This is not a small key, return the length we read */
331 *RealLength = Length;
332 return FALSE;
333}
334
335//
336// Returns whether or not this is a big valued key
337//
338static inline
342{
343 /* Check if the hive is XP Beta 1 or newer */
344 if (Hive->Version >= HSYS_WHISTLER_BETA1)
345 {
346 /* Check if the key length is valid for a big value key */
348 {
349 /* Yes, this value is big */
350 return TRUE;
351 }
352 }
353
354 /* Not a big value key */
355 return FALSE;
356}
357
358/*
359 * Public Hive functions.
360 */
363 PHHIVE RegistryHive,
364 ULONG OperationType,
365 ULONG HiveFlags,
367 PVOID HiveData OPTIONAL,
370 PFILE_SET_SIZE_ROUTINE FileSetSize,
371 PFILE_WRITE_ROUTINE FileWrite,
372 PFILE_READ_ROUTINE FileRead,
373 PFILE_FLUSH_ROUTINE FileFlush,
374 ULONG Cluster OPTIONAL,
376
378HvFree(
379 PHHIVE RegistryHive);
380
381#define HvGetCell(Hive, Cell) \
382 (Hive)->GetCellRoutine(Hive, Cell)
383
384#define HvReleaseCell(Hive, Cell) \
385do { \
386 if ((Hive)->ReleaseCellRoutine) \
387 (Hive)->ReleaseCellRoutine(Hive, Cell); \
388} while(0)
389
392 PHHIVE RegistryHive,
393 PVOID Cell);
394
397 PHHIVE RegistryHive,
398 ULONG Size,
400 IN HCELL_INDEX Vicinity);
401
404 IN PHHIVE RegistryHive,
405 IN HCELL_INDEX CellIndex
406);
407
410 PHHIVE RegistryHive,
411 HCELL_INDEX CellOffset,
412 ULONG Size);
413
416 PHHIVE RegistryHive,
417 HCELL_INDEX CellOffset);
418
421 PHHIVE RegistryHive,
422 HCELL_INDEX CellOffset,
423 BOOLEAN HoldingLock);
424
427 IN PHHIVE Hive,
428 IN HCELL_INDEX Cell
429);
430
432CMAPI
434 IN PHHIVE RegistryHive
435);
436
439 PHHIVE RegistryHive);
440
443 PHHIVE RegistryHive);
444
446CMAPI
448 IN OUT PHV_TRACK_CELL_REF CellRef,
449 IN PHHIVE Hive,
450 IN HCELL_INDEX Cell
451);
452
453VOID
454CMAPI
457);
458
459/*
460 * Private functions.
461 */
462
465 _In_ PHHIVE Hive,
466 _In_ HCELL_INDEX CellIndex);
467
470 PHHIVE RegistryHive,
471 ULONG Size,
473
476 PHHIVE Hive);
477
480 PHBASE_BLOCK HiveHeader);
481
482
483/* Old-style Public "Cmlib" functions */
484
487 PHHIVE Hive,
488 PCWSTR Name);
489
492 PHHIVE RegistryHive);
493
494
495/* NT-style Public Cm functions */
496
497//
498// Cell Index Routines
499//
501NTAPI
503 IN PHHIVE Hive,
505 IN PCUNICODE_STRING SearchName
506);
507
509NTAPI
511 IN PHHIVE Hive,
514);
515
516ULONG
517NTAPI
519 IN ULONG Hash,
521 IN BOOLEAN AllowSeparators
522);
523
525NTAPI
527 IN PHHIVE Hive,
530);
531
533NTAPI
535 IN PHHIVE Hive,
537 IN HCELL_INDEX TargetKey
538);
539
541NTAPI
543 IN PHHIVE Hive,
545 HCELL_INDEX TargetKey
546);
547
548
549//
550// Name Functions
551//
552LONG
553NTAPI
555 IN PCUNICODE_STRING SearchName,
556 IN PWCHAR CompressedName,
557 IN ULONG NameLength
558);
559
560USHORT
561NTAPI
563 IN PHHIVE Hive,
565);
566
567USHORT
568NTAPI
570 IN PWCHAR Name,
572);
573
574USHORT
575NTAPI
577 IN PHHIVE Hive,
580);
581
582VOID
583NTAPI
586 IN ULONG DestinationLength,
588 IN ULONG SourceLength
589);
590
592NTAPI
594 IN PHHIVE Hive,
597 OUT PULONG ChildIndex OPTIONAL,
598 OUT PHCELL_INDEX CellIndex
599);
600
601
602//
603// Cell Value Routines
604//
606NTAPI
608 IN PHHIVE Hive,
609 IN PCM_KEY_NODE KeyNode,
611);
612
614NTAPI
616 IN PHHIVE Hive,
619);
620
622NTAPI
624 IN PHHIVE Hive,
625 IN PVOID Data,
627 IN HSTORAGE_TYPE StorageType,
628 IN HCELL_INDEX ValueCell,
629 OUT PHCELL_INDEX DataCell
630);
631
633NTAPI
635 IN PHHIVE Hive,
636 IN HCELL_INDEX ValueCell,
637 IN ULONG Index,
638 IN HSTORAGE_TYPE StorageType,
640);
641
643NTAPI
645 IN PHHIVE Hive,
646 IN HCELL_INDEX Cell
647);
648
650NTAPI
652 IN PHHIVE Hive,
654);
655
657NTAPI
659 IN PHHIVE Hive,
660 IN HCELL_INDEX DataCell,
662);
663
665NTAPI
667 IN PHHIVE Hive,
668 IN ULONG Index,
670);
671
673NTAPI
675 IN PHHIVE Hive,
679 OUT PBOOLEAN BufferAllocated,
680 OUT PHCELL_INDEX CellToRelease
681);
682
684NTAPI
686 IN PHHIVE SourceHive,
687 IN PCHILD_LIST SrcValueList,
688 IN PHHIVE DestinationHive,
689 IN OUT PCHILD_LIST DestValueList,
690 IN HSTORAGE_TYPE StorageType
691);
692
694NTAPI
696 IN PHHIVE Hive,
697 IN HCELL_INDEX Cell,
699);
700
701VOID
702NTAPI
704 IN PHHIVE Hive,
705 IN HCELL_INDEX SecurityCell
706);
707
708VOID
709NTAPI
711 IN PHHIVE Hive,
712 IN HCELL_INDEX Cell
713);
714
715/******************************************************************************/
716
717/* To be implemented by the user of this library */
718PVOID
719NTAPI
721 IN SIZE_T Size,
722 IN BOOLEAN Paged,
723 IN ULONG Tag
724);
725
726VOID
727NTAPI
728CmpFree(
729 IN PVOID Ptr,
730 IN ULONG Quota
731);
732
733#endif /* _CMLIB_H_ */
unsigned char BOOLEAN
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
Definition: acpixf.h:732
LONG NTSTATUS
Definition: precomp.h:26
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
Definition: cdrom.h:1444
Definition: bufpool.h:45
#define CM_KEY_VALUE_BIG
Definition: cmdata.h:50
#define CM_KEY_VALUE_SPECIAL_SIZE
Definition: cmdata.h:51
BOOLEAN CMAPI HvTrackCellRef(IN OUT PHV_TRACK_CELL_REF CellRef, IN PHHIVE Hive, IN HCELL_INDEX Cell)
Definition: hivecell.c:554
struct _HV_TRACK_CELL_REF * PHV_TRACK_CELL_REF
#define CMP_SECURITY_HASH_LISTS
Definition: cmlib.h:223
#define STATIC_CELL_PAIR_COUNT
Definition: cmlib.h:296
struct _HV_HIVE_CELL_PAIR HV_HIVE_CELL_PAIR
struct _CM_KEY_SECURITY_CACHE_ENTRY * PCM_KEY_SECURITY_CACHE_ENTRY
Definition: cmlib.h:218
BOOLEAN CMAPI CmCreateRootNode(PHHIVE Hive, PCWSTR Name)
Definition: cminit.c:17
USHORT NTAPI CmpCopyName(IN PHHIVE Hive, OUT PWCHAR Destination, IN PCUNICODE_STRING Source)
Definition: cmname.c:21
BOOLEAN NTAPI CmpMarkValueDataDirty(IN PHHIVE Hive, IN PCM_KEY_VALUE Value)
Definition: cmvalue.c:19
static BOOLEAN CmpIsKeyValueBig(IN PHHIVE Hive, IN ULONG Length)
Definition: cmlib.h:340
BOOLEAN NTAPI CmpAddSubKey(IN PHHIVE Hive, IN HCELL_INDEX Parent, IN HCELL_INDEX Child)
Definition: cmindex.c:1465
BOOLEAN CMAPI HvHiveWillShrink(IN PHHIVE RegistryHive)
Definition: hivewrt.c:277
BOOLEAN NTAPI CmpFreeValue(IN PHHIVE Hive, IN HCELL_INDEX Cell)
Definition: cmvalue.c:73
BOOLEAN NTAPI CmpFreeValueData(IN PHHIVE Hive, IN HCELL_INDEX DataCell, IN ULONG DataLength)
Definition: cmvalue.c:44
struct _CM_USE_COUNT_LOG_ENTRY * PCM_USE_COUNT_LOG_ENTRY
HCELL_INDEX NTAPI CmpFindSubKeyByNumber(IN PHHIVE Hive, IN PCM_KEY_NODE Node, IN ULONG Number)
Definition: cmindex.c:600
VOID NTAPI CmpFree(IN PVOID Ptr, IN ULONG Quota)
Definition: registry.c:57
#define CMAPI
Definition: cmlib.h:210
ULONG CMAPI HvpHiveHeaderChecksum(PHBASE_BLOCK HiveHeader)
Definition: hivesum.c:17
NTSTATUS NTAPI CmpRemoveValueFromList(IN PHHIVE Hive, IN ULONG Index, IN OUT PCHILD_LIST ChildList)
Definition: cmvalue.c:320
USHORT NTAPI CmpNameSize(IN PHHIVE Hive, IN PCUNICODE_STRING Name)
Definition: cmname.c:74
BOOLEAN CMAPI HvSyncHive(PHHIVE RegistryHive)
Definition: hivewrt.c:243
NTSTATUS NTAPI CmpSetValueDataNew(IN PHHIVE Hive, IN PVOID Data, IN ULONG DataSize, IN HSTORAGE_TYPE StorageType, IN HCELL_INDEX ValueCell, OUT PHCELL_INDEX DataCell)
Definition: cmvalue.c:289
BOOLEAN NTAPI CmpGetValueData(IN PHHIVE Hive, IN PCM_KEY_VALUE Value, OUT PULONG Length, OUT PVOID *Buffer, OUT PBOOLEAN BufferAllocated, OUT PHCELL_INDEX CellToRelease)
Definition: cmvalue.c:125
BOOLEAN NTAPI CmpRemoveSubKey(IN PHHIVE Hive, IN HCELL_INDEX ParentKey, IN HCELL_INDEX TargetKey)
Definition: cmindex.c:1694
VOID NTAPI CmpCopyCompressedName(OUT PWCHAR Destination, IN ULONG DestinationLength, IN PWCHAR Source, IN ULONG SourceLength)
Definition: cmname.c:56
NTSTATUS NTAPI CmpCopyKeyValueList(IN PHHIVE SourceHive, IN PCHILD_LIST SrcValueList, IN PHHIVE DestinationHive, IN OUT PCHILD_LIST DestValueList, IN HSTORAGE_TYPE StorageType)
Definition: cmvalue.c:521
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)
Definition: hiveinit.c:522
BOOLEAN CMAPI HvIsCellDirty(IN PHHIVE Hive, IN HCELL_INDEX Cell)
Definition: hivecell.c:153
VOID CMAPI HvReleaseFreeCellRefArray(IN OUT PHV_TRACK_CELL_REF CellRef)
Definition: hivecell.c:634
VOID NTAPI CmpFreeSecurityDescriptor(IN PHHIVE Hive, IN HCELL_INDEX Cell)
Definition: cmse.c:65
VOID CMAPI CmPrepareHive(PHHIVE RegistryHive)
Definition: cminit.c:135
PCELL_DATA CMAPI HvpGetCellData(_In_ PHHIVE Hive, _In_ HCELL_INDEX CellIndex)
Definition: hivecell.c:77
struct _CM_KEY_CONTROL_BLOCK * PCM_KEY_CONTROL_BLOCK
Definition: cmlib.h:219
BOOLEAN NTAPI CmpMarkIndexDirty(IN PHHIVE Hive, HCELL_INDEX ParentKey, HCELL_INDEX TargetKey)
HCELL_INDEX NTAPI CmpFindValueByName(IN PHHIVE Hive, IN PCM_KEY_NODE KeyNode, IN PCUNICODE_STRING Name)
Definition: cmvalue.c:99
struct _HV_HIVE_CELL_PAIR * PHV_HIVE_CELL_PAIR
static BOOLEAN CmpIsKeyValueSmall(OUT PULONG RealLength, IN ULONG Length)
Definition: cmlib.h:319
BOOLEAN CMAPI HvIsCellAllocated(IN PHHIVE RegistryHive, IN HCELL_INDEX CellIndex)
Definition: hivecell.c:53
PCELL_DATA NTAPI CmpValueToData(IN PHHIVE Hive, IN PCM_KEY_VALUE Value, OUT PULONG Length)
Definition: cmvalue.c:167
VOID CMAPI HvFreeCell(PHHIVE RegistryHive, HCELL_INDEX CellOffset)
Definition: hivecell.c:468
struct _CM_CELL_REMAP_BLOCK * PCM_CELL_REMAP_BLOCK
Definition: cmlib.h:220
NTSTATUS CMAPI HvpCreateHiveFreeCellList(PHHIVE Hive)
Definition: hivecell.c:306
LONG CMAPI HvGetCellSize(PHHIVE RegistryHive, PVOID Cell)
LONG NTAPI CmpCompareCompressedName(IN PCUNICODE_STRING SearchName, IN PWCHAR CompressedName, IN ULONG NameLength)
Definition: cmname.c:109
struct _CM_USE_COUNT_LOG * PCM_USE_COUNT_LOG
struct _CMHIVE * PCMHIVE
USHORT NTAPI CmpCompressedNameSize(IN PWCHAR Name, IN ULONG Length)
Definition: cmname.c:95
BOOLEAN CMAPI HvMarkCellDirty(PHHIVE RegistryHive, HCELL_INDEX CellOffset, BOOLEAN HoldingLock)
Definition: hivecell.c:109
struct _CMHIVE CMHIVE
HCELL_INDEX CMAPI HvReallocateCell(PHHIVE RegistryHive, HCELL_INDEX CellOffset, ULONG Size)
Definition: hivecell.c:421
HCELL_INDEX CMAPI HvAllocateCell(PHHIVE RegistryHive, ULONG Size, HSTORAGE_TYPE Storage, IN HCELL_INDEX Vicinity)
HCELL_INDEX NTAPI CmpFindSubKeyByName(IN PHHIVE Hive, IN PCM_KEY_NODE Parent, IN PCUNICODE_STRING SearchName)
Definition: cmindex.c:683
ULONG NTAPI CmpComputeHashKey(IN ULONG Hash, IN PCUNICODE_STRING Name, IN BOOLEAN AllowSeparators)
Definition: cmindex.c:460
ULONG CmlibTraceLevel
Definition: cminit.c:12
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)
Definition: registry.c:46
struct _HV_TRACK_CELL_REF HV_TRACK_CELL_REF
VOID CMAPI HvFree(PHHIVE RegistryHive)
Definition: hiveinit.c:628
BOOLEAN CMAPI HvWriteHive(PHHIVE RegistryHive)
Definition: hivewrt.c:285
VOID NTAPI CmpRemoveSecurityCellList(IN PHHIVE Hive, IN HCELL_INDEX SecurityCell)
Definition: cmse.c:19
BOOLEAN NTAPI CmpFindNameInList(IN PHHIVE Hive, IN PCHILD_LIST ChildList, IN PCUNICODE_STRING Name, OUT PULONG ChildIndex OPTIONAL, OUT PHCELL_INDEX CellIndex)
Definition: cmname.c:149
NTSTATUS NTAPI CmpFreeKeyByCell(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN BOOLEAN Unlink)
Definition: cmkeydel.c:159
struct _CM_USE_COUNT_LOG_ENTRY CM_USE_COUNT_LOG_ENTRY
PHBIN CMAPI HvpAddBin(PHHIVE RegistryHive, ULONG Size, HSTORAGE_TYPE Storage)
Definition: hivebin.c:12
struct _CM_USE_COUNT_LOG CM_USE_COUNT_LOG
NTSTATUS NTAPI CmpAddValueToList(IN PHHIVE Hive, IN HCELL_INDEX ValueCell, IN ULONG Index, IN HSTORAGE_TYPE StorageType, IN OUT PCHILD_LIST ChildList)
Definition: cmvalue.c:207
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static int Hash(const char *)
Definition: reader.c:2257
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
Definition: string_lib.cpp:31
#define KeQuerySystemTime(t)
Definition: env_spec_w32.h:570
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
Definition: fsrtlfuncs.h:898
BOOLEAN(CMAPI * PFILE_READ_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PULONG FileOffset, PVOID Buffer, SIZE_T BufferLength)
Definition: hivedata.h:223
ULONG * PHCELL_INDEX
Definition: hivedata.h:80
HSTORAGE_TYPE
Definition: hivedata.h:101
#define HFILE_TYPE_MAX
Definition: hivedata.h:36
BOOLEAN(CMAPI * PFILE_WRITE_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PULONG FileOffset, PVOID Buffer, SIZE_T BufferLength)
Definition: hivedata.h:232
VOID(CMAPI * PFREE_ROUTINE)(PVOID Ptr, ULONG Quota)
Definition: hivedata.h:217
BOOLEAN(CMAPI * PFILE_FLUSH_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PLARGE_INTEGER FileOffset, ULONG Length)
Definition: hivedata.h:249
PVOID(CMAPI * PALLOCATE_ROUTINE)(SIZE_T Size, BOOLEAN Paged, ULONG Tag)
Definition: hivedata.h:210
ULONG HCELL_INDEX
Definition: hivedata.h:80
BOOLEAN(CMAPI * PFILE_SET_SIZE_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, ULONG FileSize, ULONG OldfileSize)
Definition: hivedata.h:241
#define HSYS_WHISTLER_BETA1
Definition: hivedata.h:59
NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP, PULONG, ULONG)
NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP)
NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP, ULONG, ULONG)
NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP, ULONG, ULONG)
WORD SECURITY_DESCRIPTOR_CONTROL
Definition: lsa.idl:37
WORD * PSECURITY_DESCRIPTOR_CONTROL
Definition: lsa.idl:37
static IStorage Storage
Definition: ole2.c:3548
#define _In_
Definition: ms_sal.h:308
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3169
_In_ const STRING * String2
Definition: rtlfuncs.h:2345
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
Definition: rtlfuncs.h:1910
_In_ const STRING _In_ BOOLEAN CaseInSensitive
Definition: rtlfuncs.h:2378
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
Definition: rtlfuncs.h:2992
_Out_ _Inout_ POEM_STRING DestinationString
Definition: rtlfuncs.h:1909
WCHAR NTAPI RtlUpcaseUnicodeChar(_In_ WCHAR Source)
Definition: nlsboot.c:176
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
Definition: ntpoapi.h:207
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
Definition: rtlcompat.c:108
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
Definition: cmlib.h:245
LONG SecurityHitHint
Definition: cmlib.h:269
ULONG FlushCount
Definition: cmlib.h:285
PKTHREAD HiveSecurityLockOwner
Definition: cmlib.h:258
HHIVE Hive
Definition: cmlib.h:246
BOOLEAN HiveIsLoading
Definition: cmlib.h:286
LIST_ENTRY NotifyList
Definition: cmlib.h:248
BOOLEAN Frozen
Definition: cmlib.h:274
PKGUARDED_MUTEX ViewLock
Definition: cmlib.h:252
LIST_ENTRY HiveList
Definition: cmlib.h:249
ULONG SecurityCount
Definition: cmlib.h:267
EX_PUSH_LOCK WriterLock
Definition: cmlib.h:254
USHORT MappedViews
Definition: cmlib.h:264
PKTHREAD HiveLockOwner
Definition: cmlib.h:251
PERESOURCE FlusherLock
Definition: cmlib.h:256
PKTHREAD WriterLockOwner
Definition: cmlib.h:255
ULONG UseCount
Definition: cmlib.h:266
BOOLEAN GrowOnlyMode
Definition: cmlib.h:276
LIST_ENTRY KnodeConvertListHead
Definition: cmlib.h:279
EX_PUSH_LOCK SecurityLock
Definition: cmlib.h:257
LIST_ENTRY SecurityHash[CMP_SECURITY_HASH_LISTS]
Definition: cmlib.h:271
PWORK_QUEUE_ITEM UnloadWorkItem
Definition: cmlib.h:275
PKTHREAD CreatorOwner
Definition: cmlib.h:287
LIST_ENTRY TrustClassEntry
Definition: cmlib.h:284
ULONG Flags
Definition: cmlib.h:283
CM_USE_COUNT_LOG UseCountLog
Definition: cmlib.h:281
HANDLE FileHandles[HFILE_TYPE_MAX]
Definition: cmlib.h:247
LIST_ENTRY PinViewListHead
Definition: cmlib.h:260
LIST_ENTRY KcbConvertListHead
Definition: cmlib.h:278
PKEVENT UnloadEvent
Definition: cmlib.h:272
UNICODE_STRING FileUserName
Definition: cmlib.h:263
ULONG SecurityCacheSize
Definition: cmlib.h:268
PCM_KEY_SECURITY_CACHE_ENTRY SecurityCache
Definition: cmlib.h:270
PFILE_OBJECT FileObject
Definition: cmlib.h:261
PCM_KEY_CONTROL_BLOCK RootKcb
Definition: cmlib.h:273
LIST_ENTRY LRUViewListHead
Definition: cmlib.h:259
PKTHREAD ViewLockOwner
Definition: cmlib.h:253
PCM_CELL_REMAP_BLOCK CellRemapArray
Definition: cmlib.h:280
ULONG GrowOffset
Definition: cmlib.h:277
EX_PUSH_LOCK HiveLock
Definition: cmlib.h:250
USHORT PinnedViews
Definition: cmlib.h:265
CM_USE_COUNT_LOG LockHiveLog
Definition: cmlib.h:282
UNICODE_STRING FileFullPath
Definition: cmlib.h:262
Definition: cm.h:189
Definition: cmlib.h:229
HCELL_INDEX Cell
Definition: cmlib.h:230
USHORT Size
Definition: cmlib.h:237
USHORT Next
Definition: cmlib.h:236
CM_USE_COUNT_LOG_ENTRY Log[32]
Definition: cmlib.h:238
HCELL_INDEX Cell
Definition: cmlib.h:293
PHV_HIVE_CELL_PAIR CellArray
Definition: cmlib.h:301
HV_HIVE_CELL_PAIR StaticArray[STATIC_CELL_PAIR_COUNT]
Definition: cmlib.h:302
USHORT Count
Definition: cmlib.h:299
USHORT StaticCount
Definition: cmlib.h:303
Definition: typedefs.h:120
SECURITY_DESCRIPTOR_CONTROL Control
Definition: setypes.h:835
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
unsigned char * PBOOLEAN
Definition: typedefs.h:53
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
Definition: dlist.c:348
static int Unlink(const char **args)
Definition: vfdcmd.c:2549
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFCHILDLIST * ChildList
Definition: wdfchildlist.h:481
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4065
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
Definition: wdfdevice.h:2741
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
Definition: wdffdo.h:536
_Must_inspect_result_ _In_opt_ WDFKEY ParentKey
Definition: wdfregistry.h:69
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
Definition: wdfrequest.h:639
_In_opt_ PALLOCATE_FUNCTION Allocate
Definition: exfuncs.h:814
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:815
* PFILE_OBJECT
Definition: iotypes.h:1998
_In_ ULONG NumberToFind
Definition: rtlfuncs.h:609
_In_ ULONG _In_ ULONG HintIndex
Definition: rtlfuncs.h:610
_In_ ULONG StartingIndex
Definition: rtlfuncs.h:395
struct _SECURITY_DESCRIPTOR_RELATIVE * PISECURITY_DESCRIPTOR_RELATIVE
struct _SECURITY_DESCRIPTOR_RELATIVE SECURITY_DESCRIPTOR_RELATIVE
unsigned char UCHAR
Definition: xmlstorage.h:181
__wchar_t WCHAR
Definition: xmlstorage.h:180