ReactOS 0.4.17-dev-966-gf06eace
cmlib.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Configuration Manager Library - CMLIB header
5 * COPYRIGHT: Copyright 2001 - 2005 Eric Kohl
6 * Copyright 2022 George Bișoc <george.bisoc@reactos.org>
7 */
8
9#ifndef _CMLIB_H_
10#define _CMLIB_H_
11
12//
13// Debug support switch
14//
15#define _CMLIB_DEBUG_ 1
16
17#ifdef CMLIB_HOST
18 #include <typedefs.h>
19 #include <stdio.h>
20 #include <string.h>
21
22 // NTDDI_xxx versions we allude to in the library (see psdk/sdkddkver.h)
23 #define NTDDI_WS03SP4 0x05020400
24 #define NTDDI_WIN6 0x06000000
25 #define NTDDI_LONGHORN NTDDI_WIN6
26 #define NTDDI_VISTA NTDDI_WIN6
27 #define NTDDI_WIN7 0x06010000
28
29 #define NTDDI_VERSION NTDDI_WS03SP4 // This is the ReactOS NT kernel version
30
31 /* C_ASSERT Definition */
32 #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1]
33
34 #ifdef _WIN32
35 #define strncasecmp _strnicmp
36 #define strcasecmp _stricmp
37 #endif // _WIN32
38
39 #if (!defined(_MSC_VER) || (_MSC_VER < 1500))
40 #define _In_
41 #define _Out_
42 #define _Inout_
43 #define _In_opt_
44 #define _In_range_(x, y)
45 #endif
46
47 #define __drv_aliasesMem
48
49 #ifndef min
50 #define min(a, b) (((a) < (b)) ? (a) : (b))
51 #endif
52
53 // #ifndef max
54 // #define max(a, b) (((a) > (b)) ? (a) : (b))
55 // #endif
56
57 // Definitions copied from <ntstatus.h>
58 // We only want to include host headers, so we define them manually
59 #define STATUS_SUCCESS ((NTSTATUS)0x00000000)
60 #define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002)
61 #define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017)
62 #define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009A)
63 #define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000D)
64 #define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014C)
65 #define STATUS_REGISTRY_IO_FAILED ((NTSTATUS)0xC000014D)
66 #define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015C)
67 #define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009)
68
69 #define REG_OPTION_VOLATILE 1
70 #define OBJ_CASE_INSENSITIVE 0x00000040L
71 #define USHORT_MAX USHRT_MAX
72
73 #define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\')
74 #define UNICODE_NULL ((WCHAR)0)
75
80
83 IN PCUNICODE_STRING String1,
86
87 // FIXME: DECLSPEC_NORETURN
88 VOID
89 NTAPI
91 IN ULONG BugCheckCode,
92 IN ULONG_PTR BugCheckParameter1,
93 IN ULONG_PTR BugCheckParameter2,
94 IN ULONG_PTR BugCheckParameter3,
95 IN ULONG_PTR BugCheckParameter4);
96
99 OUT PLARGE_INTEGER CurrentTime);
100
103 IN WCHAR Source);
104
105 VOID NTAPI
107 IN PRTL_BITMAP BitMapHeader,
108 IN PULONG BitMapBuffer,
109 IN ULONG SizeOfBitMap);
110
113 IN PRTL_BITMAP BitMapHeader,
116
117 VOID NTAPI
119 IN PRTL_BITMAP BitMapHeader,
121 IN ULONG NumberToSet);
122
123 VOID NTAPI
125 IN PRTL_BITMAP BitMapHeader);
126
127 VOID NTAPI
129 IN PRTL_BITMAP BitMapHeader);
130
131 #define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP) / 32]) >> ((BP) % 32)) & 0x1)
132 #define UNREFERENCED_PARAMETER(P) ((void)(P))
133
134 #define PKTHREAD PVOID
135 #define PKGUARDED_MUTEX PVOID
136 #define PERESOURCE PVOID
137 #define PFILE_OBJECT PVOID
138 #define PKEVENT PVOID
139 #define PWORK_QUEUE_ITEM PVOID
140 #define EX_PUSH_LOCK PULONG_PTR
141
142 // Definitions copied from <ntifs.h>
143 // We only want to include host headers, so we define them manually
144
146
147 typedef struct _SECURITY_DESCRIPTOR_RELATIVE
148 {
150 UCHAR Sbz1;
152 ULONG Owner;
153 ULONG Group;
154 ULONG Sacl;
155 ULONG Dacl;
157
158 #define CMLTRACE(x, ...)
159
160 #undef PAGED_CODE
161 #define PAGED_CODE()
162
163 #define REGISTRY_ERROR ((ULONG)0x00000051L)
164
165#else
166
167 //
168 // Debug/Tracing support
169 //
170 #if _CMLIB_DEBUG_
171 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
172 #define CMLTRACE DbgPrintEx
173 #else
174 #define CMLTRACE(x, ...) \
175 if (x & CmlibTraceLevel) DbgPrint(__VA_ARGS__)
176 #endif
177 #else
178 #define CMLTRACE(x, ...) DPRINT(__VA_ARGS__)
179 #endif
180
181 #include <ntdef.h>
182 #include <ntifs.h>
183 #include <bugcodes.h>
184
185 #ifdef _BLDR_
186 #undef PAGED_CODE
187 #define PAGED_CODE()
188 #endif
189
190 /* Prevent inclusion of Windows headers through <wine/unicode.h> */
191 #define _WINDEF_
192 #define _WINBASE_
193 #define _WINNLS_
194#endif
195
196
197//
198// These define the Debug Masks Supported
199//
200#define CMLIB_HCELL_DEBUG 0x01
201
202#ifndef ROUND_UP
203#define ROUND_UP(a,b) ((((a)+(b)-1)/(b))*(b))
204#define ROUND_DOWN(a,b) (((a)/(b))*(b))
205#endif
206
207//
208// PAGE_SIZE definition
209//
210#ifndef PAGE_SIZE
211#if defined(TARGET_i386) || defined(TARGET_amd64) || \
212 defined(TARGET_arm) || defined(TARGET_arm64)
213#define PAGE_SIZE 0x1000
214#else
215#error Local PAGE_SIZE definition required when built as host
216#endif
217#endif
218
219#define TAG_CM ' MC'
220#define TAG_KCB 'bkMC'
221#define TAG_CMHIVE 'vHMC'
222#define TAG_CMSD 'DSMC'
223#define TAG_REGISTRY_STACK 'sRMC'
224
225#define CMAPI NTAPI
226
227//
228// Check Registry status type definition
229//
231
232//
233// Check Registry flags
234//
235#define CM_CHECK_REGISTRY_DONT_PURGE_VOLATILES 0x0
236#define CM_CHECK_REGISTRY_PURGE_VOLATILES 0x2
237#define CM_CHECK_REGISTRY_BOOTLOADER_PURGE_VOLATILES 0x4
238#define CM_CHECK_REGISTRY_VALIDATE_HIVE 0x8
239#define CM_CHECK_REGISTRY_FIX_HIVE 0x10
240
241//
242// Check Registry status codes
243//
244#define CM_CHECK_REGISTRY_GOOD 0
245#define CM_CHECK_REGISTRY_INVALID_PARAMETER 1
246#define CM_CHECK_REGISTRY_SD_INVALID 2
247#define CM_CHECK_REGISTRY_HIVE_CORRUPT_SIGNATURE 3
248#define CM_CHECK_REGISTRY_BIN_SIZE_OR_OFFSET_CORRUPT 4
249#define CM_CHECK_REGISTRY_BIN_SIGNATURE_HEADER_CORRUPT 5
250#define CM_CHECK_REGISTRY_BAD_FREE_CELL 6
251#define CM_CHECK_REGISTRY_BAD_ALLOC_CELL 7
252#define CM_CHECK_REGISTRY_ALLOCATE_MEM_STACK_FAIL 8
253#define CM_CHECK_REGISTRY_ROOT_CELL_NOT_FOUND 9
254#define CM_CHECK_REGISTRY_BAD_LEXICOGRAPHICAL_ORDER 10
255#define CM_CHECK_REGISTRY_NODE_NOT_FOUND 11
256#define CM_CHECK_REGISTRY_SUBKEY_NOT_FOUND 12
257#define CM_CHECK_REGISTRY_TREE_TOO_MANY_LEVELS 13
258#define CM_CHECK_REGISTRY_KEY_CELL_NOT_ALLOCATED 14
259#define CM_CHECK_REGISTRY_CELL_DATA_NOT_FOUND 15
260#define CM_CHECK_REGISTRY_CELL_SIZE_NOT_SANE 16
261#define CM_CHECK_REGISTRY_KEY_NAME_LENGTH_ZERO 17
262#define CM_CHECK_REGISTRY_KEY_TOO_BIG_THAN_CELL 18
263#define CM_CHECK_REGISTRY_BAD_KEY_NODE_PARENT 19
264#define CM_CHECK_REGISTRY_BAD_KEY_NODE_SIGNATURE 20
265#define CM_CHECK_REGISTRY_KEY_CLASS_UNALLOCATED 21
266#define CM_CHECK_REGISTRY_VALUE_LIST_UNALLOCATED 22
267#define CM_CHECK_REGISTRY_VALUE_LIST_DATA_NOT_FOUND 23
268#define CM_CHECK_REGISTRY_VALUE_LIST_SIZE_NOT_SANE 24
269#define CM_CHECK_REGISTRY_VALUE_CELL_NIL 25
270#define CM_CHECK_REGISTRY_VALUE_CELL_UNALLOCATED 26
271#define CM_CHECK_REGISTRY_VALUE_CELL_DATA_NOT_FOUND 27
272#define CM_CHECK_REGISTRY_VALUE_CELL_SIZE_NOT_SANE 28
273#define CM_CHECK_REGISTRY_CORRUPT_VALUE_DATA 29
274#define CM_CHECK_REGISTRY_DATA_CELL_NOT_ALLOCATED 30
275#define CM_CHECK_REGISTRY_BAD_KEY_VALUE_SIGNATURE 31
276#define CM_CHECK_REGISTRY_STABLE_KEYS_ON_VOLATILE 32
277#define CM_CHECK_REGISTRY_SUBKEYS_LIST_UNALLOCATED 33
278#define CM_CHECK_REGISTRY_CORRUPT_SUBKEYS_INDEX 34
279#define CM_CHECK_REGISTRY_BAD_SUBKEY_COUNT 35
280#define CM_CHECK_REGISTRY_KEY_INDEX_CELL_UNALLOCATED 36
281#define CM_CHECK_REGISTRY_CORRUPT_LEAF_ON_ROOT 37
282#define CM_CHECK_REGISTRY_CORRUPT_LEAF_SIGNATURE 38
283#define CM_CHECK_REGISTRY_CORRUPT_KEY_INDEX_SIGNATURE 39
284
285//
286// Check Registry success macro
287//
288#define CM_CHECK_REGISTRY_SUCCESS(StatusCode) ((ULONG)(StatusCode) == CM_CHECK_REGISTRY_GOOD)
289
290#include <wine/unicode.h>
291#include <wchar.h>
292#include "hivedata.h"
293#include "cmdata.h"
294
295/* Forward declarations */
299
300// See ntoskrnl/include/internal/cm.h
301#define CMP_SECURITY_HASH_LISTS 64
302
303//
304// Use Count Log and Entry
305//
307{
311
312typedef struct _CM_USE_COUNT_LOG
313{
318
319//
320// Configuration Manager Hive Structure
321//
322typedef struct _CMHIVE
323{
342#if (NTDDI_VERSION >= NTDDI_VISTA)
344#endif
369 //
370 // ReactOS-specific fields
371 //
372#if (NTDDI_VERSION < NTDDI_VISTA) && defined(__REACTOS__)
374#endif
376
377typedef struct _HV_HIVE_CELL_PAIR
378{
382
383#define STATIC_CELL_PAIR_COUNT 4
384typedef struct _HV_TRACK_CELL_REF
385{
392
394
395//
396// Hack since big keys are not yet supported
397//
398#ifdef _BLDR_
399#define ASSERT_VALUE_BIG(h, s) \
400 do { if (CmpIsKeyValueBig(h,s)) DbgPrint("Big keys aren't supported!\n"); } while (0)
401#else
402#define ASSERT_VALUE_BIG(h, s) \
403 ASSERTMSG("Big keys not supported!\n", !CmpIsKeyValueBig(h, s));
404#endif
405
406//
407// Returns whether or not this is a small valued key
408//
409static inline
413{
414 /* Check if the length has the special size value */
416 {
417 /* It does, so this is a small key: return the real length */
418 *RealLength = Length - CM_KEY_VALUE_SPECIAL_SIZE;
419 return TRUE;
420 }
421
422 /* This is not a small key, return the length we read */
423 *RealLength = Length;
424 return FALSE;
425}
426
427//
428// Returns whether or not this is a big valued key
429//
430static inline
434{
435 /* Check if the hive is XP Beta 1 or newer */
436 if (Hive->Version >= HSYS_WHISTLER_BETA1)
437 {
438 /* Check if the key length is valid for a big value key */
440 {
441 /* Yes, this value is big */
442 return TRUE;
443 }
444 }
445
446 /* Not a big value key */
447 return FALSE;
448}
449
450/*
451 * Public Hive functions.
452 */
455 PHHIVE RegistryHive,
456 ULONG OperationType,
457 ULONG HiveFlags,
459 PVOID HiveData OPTIONAL,
462 PFILE_SET_SIZE_ROUTINE FileSetSize,
463 PFILE_WRITE_ROUTINE FileWrite,
464 PFILE_READ_ROUTINE FileRead,
465 PFILE_FLUSH_ROUTINE FileFlush,
466 ULONG Cluster OPTIONAL,
468
471 PHHIVE RegistryHive);
472
473#define HvGetCell(Hive, Cell) \
474 (Hive)->GetCellRoutine(Hive, Cell)
475
476#define HvReleaseCell(Hive, Cell) \
477do { \
478 if ((Hive)->ReleaseCellRoutine) \
479 (Hive)->ReleaseCellRoutine(Hive, Cell); \
480} while(0)
481
484 PHHIVE RegistryHive,
485 PVOID Cell);
486
489 PHHIVE RegistryHive,
490 ULONG Size,
492 IN HCELL_INDEX Vicinity);
493
496 IN PHHIVE RegistryHive,
497 IN HCELL_INDEX CellIndex
498);
499
502 PHHIVE RegistryHive,
503 HCELL_INDEX CellOffset,
504 ULONG Size);
505
508 PHHIVE RegistryHive,
509 HCELL_INDEX CellOffset);
510
513 PHHIVE RegistryHive,
514 HCELL_INDEX CellOffset,
515 BOOLEAN HoldingLock);
516
519 IN PHHIVE Hive,
520 IN HCELL_INDEX Cell
521);
522
524CMAPI
526 IN PHHIVE RegistryHive
527);
528
531 PHHIVE RegistryHive);
532
535 PHHIVE RegistryHive);
536
538CMAPI
540 _In_ PHHIVE RegistryHive);
541
543CMAPI
545 _In_ PHHIVE RegistryHive);
546
548CMAPI
550 IN OUT PHV_TRACK_CELL_REF CellRef,
551 IN PHHIVE Hive,
552 IN HCELL_INDEX Cell
553);
554
555VOID
556CMAPI
559);
560
561/*
562 * Private functions.
563 */
564
567 _In_ PHHIVE Hive,
568 _In_ HCELL_INDEX CellIndex);
569
572 PHHIVE RegistryHive,
573 ULONG Size,
575
578 PHHIVE Hive);
579
582 PHBASE_BLOCK HiveHeader);
583
586 _In_ PHBASE_BLOCK BaseBlock,
588
589//
590// Registry Self-Heal Routines
591//
593CMAPI
595 _In_ BOOLEAN FixHive);
596
598CMAPI
600 _Inout_ PHHIVE Hive,
601 _In_ HCELL_INDEX TargetKey,
603 _In_ BOOLEAN FixHive);
604
606CMAPI
608 _Inout_ PHHIVE Hive,
609 _In_ HCELL_INDEX DirtyCell,
610 _In_ HCELL_INDEX ParentCell,
611 _Inout_ PCELL_DATA CellData,
612 _In_ BOOLEAN FixHive);
613
615CMAPI
617 _Inout_ PHHIVE Hive,
618 _In_ HCELL_INDEX DirtyCell,
619 _Inout_ PCELL_DATA CellData,
620 _In_ BOOLEAN FixHive);
621
623CMAPI
625 _Inout_ PHHIVE Hive,
626 _In_ HCELL_INDEX DirtyCell,
627 _Inout_ PCELL_DATA CellData,
628 _In_ BOOLEAN FixHive);
629
631CMAPI
633 _Inout_ PHHIVE Hive,
634 _In_ HCELL_INDEX CurrentCell,
635 _In_ BOOLEAN FixHive);
636
638CMAPI
640 _Inout_ PHHIVE Hive,
641 _In_ HCELL_INDEX CurrentCell,
642 _In_ ULONG ListCountIndex,
643 _Inout_ PCELL_DATA ValueListData,
644 _In_ BOOLEAN FixHive);
645
647CMAPI
649 _Inout_ PHHIVE Hive,
650 _In_ HCELL_INDEX CurrentCell,
652 _Inout_ PCELL_DATA CellData,
653 _In_ BOOLEAN FixHive);
654
656CMAPI
658 _Inout_ PHHIVE Hive,
659 _In_ HCELL_INDEX CurrentCell,
660 _Inout_ PCELL_DATA CellData,
661 _In_ BOOLEAN FixHive);
662
663/* Old-style Public "Cmlib" functions */
664
667 PHHIVE Hive,
668 PCWSTR Name);
669
670/* NT-style Public Cm functions */
671
672//
673// Check Registry Routines
674//
676NTAPI
678 _In_ PHHIVE Hive,
679 _In_ PHBIN Bin);
680
682NTAPI
684 _In_ PHHIVE Hive);
685
687NTAPI
689 _In_ PCMHIVE RegistryHive,
691
692//
693// Cell Index Routines
694//
696NTAPI
698 IN PHHIVE Hive,
700 IN PCUNICODE_STRING SearchName
701);
702
704NTAPI
706 IN PHHIVE Hive,
709);
710
711ULONG
712NTAPI
714 IN ULONG Hash,
716 IN BOOLEAN AllowSeparators
717);
718
720NTAPI
722 IN PHHIVE Hive,
725);
726
728NTAPI
730 IN PHHIVE Hive,
732 IN HCELL_INDEX TargetKey
733);
734
736NTAPI
738 IN PHHIVE Hive,
740 HCELL_INDEX TargetKey
741);
742
743
744//
745// Name Functions
746//
747LONG
748NTAPI
750 IN PCUNICODE_STRING SearchName,
751 IN PWCHAR CompressedName,
752 IN ULONG NameLength
753);
754
755USHORT
756NTAPI
758 IN PHHIVE Hive,
760);
761
762USHORT
763NTAPI
765 IN PWCHAR Name,
767);
768
769USHORT
770NTAPI
772 IN PHHIVE Hive,
775);
776
777VOID
778NTAPI
781 IN ULONG DestinationLength,
783 IN ULONG SourceLength
784);
785
787NTAPI
789 IN PHHIVE Hive,
792 OUT PULONG ChildIndex OPTIONAL,
793 OUT PHCELL_INDEX CellIndex
794);
795
796
797//
798// Cell Value Routines
799//
801NTAPI
803 IN PHHIVE Hive,
804 IN PCM_KEY_NODE KeyNode,
806);
807
809NTAPI
811 IN PHHIVE Hive,
814);
815
817NTAPI
819 IN PHHIVE Hive,
820 IN PVOID Data,
822 IN HSTORAGE_TYPE StorageType,
823 IN HCELL_INDEX ValueCell,
824 OUT PHCELL_INDEX DataCell
825);
826
828NTAPI
830 IN PHHIVE Hive,
831 IN HCELL_INDEX ValueCell,
832 IN ULONG Index,
833 IN HSTORAGE_TYPE StorageType,
835);
836
838NTAPI
840 IN PHHIVE Hive,
841 IN HCELL_INDEX Cell
842);
843
845NTAPI
847 IN PHHIVE Hive,
849);
850
852NTAPI
854 IN PHHIVE Hive,
855 IN HCELL_INDEX DataCell,
857);
858
860NTAPI
862 IN PHHIVE Hive,
863 IN ULONG Index,
865);
866
868NTAPI
870 IN PHHIVE Hive,
874 OUT PBOOLEAN BufferAllocated,
875 OUT PHCELL_INDEX CellToRelease
876);
877
879NTAPI
881 IN PHHIVE SourceHive,
882 IN PCHILD_LIST SrcValueList,
883 IN PHHIVE DestinationHive,
884 IN OUT PCHILD_LIST DestValueList,
885 IN HSTORAGE_TYPE StorageType
886);
887
889NTAPI
891 IN PHHIVE Hive,
892 IN HCELL_INDEX Cell,
894);
895
896VOID
897NTAPI
899 IN PHHIVE Hive,
900 IN HCELL_INDEX SecurityCell
901);
902
903VOID
904NTAPI
906 IN PHHIVE Hive,
907 IN HCELL_INDEX Cell
908);
909
910/******************************************************************************/
911
912/* To be implemented by the user of this library */
913PVOID
914NTAPI
916 IN SIZE_T Size,
917 IN BOOLEAN Paged,
918 IN ULONG Tag
919);
920
921VOID
922NTAPI
923CmpFree(
924 IN PVOID Ptr,
925 IN ULONG Quota
926);
927
928#endif /* _CMLIB_H_ */
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
unsigned char BOOLEAN
Definition: actypes.h:127
_In_ PATA_DEVICE_REQUEST _In_ BOOLEAN Allocate
Definition: ata_shared.h:437
LONG NTSTATUS
Definition: precomp.h:26
DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx(IN ULONG BugCheckCode, IN ULONG_PTR BugCheckParameter1, IN ULONG_PTR BugCheckParameter2, IN ULONG_PTR BugCheckParameter3, IN ULONG_PTR BugCheckParameter4)
Definition: debug.c:485
Definition: bin.h:44
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
CM_CHECK_REGISTRY_STATUS NTAPI HvValidateBin(_In_ PHHIVE Hive, _In_ PHBIN Bin)
Validates a bin from a hive. It performs checks against the cells from this bin, ensuring the bin is ...
Definition: cmcheck.c:1414
struct _HV_TRACK_CELL_REF * PHV_TRACK_CELL_REF
#define CMP_SECURITY_HASH_LISTS
Definition: cmlib.h:301
#define STATIC_CELL_PAIR_COUNT
Definition: cmlib.h:383
BOOLEAN CMAPI HvpVerifyHiveHeader(_In_ PHBASE_BLOCK BaseBlock, _In_ ULONG FileType)
Validates the base block header of a registry file (hive or log).
Definition: hiveinit.c:49
struct _HV_HIVE_CELL_PAIR HV_HIVE_CELL_PAIR
struct _CM_KEY_SECURITY_CACHE_ENTRY * PCM_KEY_SECURITY_CACHE_ENTRY
Definition: cmlib.h:296
BOOLEAN CMAPI CmCreateRootNode(PHHIVE Hive, PCWSTR Name)
Definition: cminit.c:17
BOOLEAN CMAPI CmpRepairParentNode(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX DirtyCell, _In_ HCELL_INDEX ParentCell, _Inout_ PCELL_DATA CellData, _In_ BOOLEAN FixHive)
Repairs the parent of the node from damage due to parent cell and parent node incosistency.
Definition: cmheal.c:533
USHORT NTAPI CmpCopyName(IN PHHIVE Hive, OUT PWCHAR Destination, IN PCUNICODE_STRING Source)
Definition: cmname.c:21
CM_CHECK_REGISTRY_STATUS NTAPI HvValidateHive(_In_ PHHIVE Hive)
Validates a registry hive. This function ensures that the storage of this hive has valid bins.
Definition: cmcheck.c:1506
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:432
BOOLEAN NTAPI CmpAddSubKey(IN PHHIVE Hive, IN HCELL_INDEX Parent, IN HCELL_INDEX Child)
Definition: cmindex.c:1465
BOOLEAN CMAPI HvHiveWillShrink(IN PHHIVE RegistryHive)
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
BOOLEAN CMAPI CmpRepairClassOfNodeKey(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX DirtyCell, _Inout_ PCELL_DATA CellData, _In_ BOOLEAN FixHive)
Repairs the class from damage due to class corruption within the node key.
Definition: cmheal.c:638
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
CM_CHECK_REGISTRY_STATUS NTAPI CmCheckRegistry(_In_ PCMHIVE RegistryHive, _In_ ULONG Flags)
Checks the registry that is consistent and its contents valid and not corrupted. More specifically th...
Definition: cmcheck.c:1635
VOID NTAPI CmpFree(IN PVOID Ptr, IN ULONG Quota)
Definition: registry.c:60
#define CMAPI
Definition: cmlib.h:225
BOOLEAN CMAPI HvSyncHiveFromRecover(_In_ PHHIVE RegistryHive)
Synchronizes a hive with recovered data during a healing/resuscitation operation of the registry.
Definition: hivewrt.c:672
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
BOOLEAN CMAPI CmpRepairValueList(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX CurrentCell, _In_ BOOLEAN FixHive)
Repairs the value list due to corruption. The process involes by purging the whole damaged list.
Definition: cmheal.c:766
USHORT NTAPI CmpNameSize(IN PHHIVE Hive, IN PCUNICODE_STRING Name)
Definition: cmname.c:74
BOOLEAN CMAPI HvSyncHive(PHHIVE RegistryHive)
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 CMAPI CmIsSelfHealEnabled(_In_ BOOLEAN FixHive)
Checks if self healing is permitted by the kernel and/or bootloader. Self healing is also triggered i...
Definition: cmheal.c:369
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)
BOOLEAN CMAPI CmpRepairKeyNodeSignature(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX DirtyCell, _Inout_ PCELL_DATA CellData, _In_ BOOLEAN FixHive)
Repairs the key node signature from damage due to signature corruption.
Definition: cmheal.c:586
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
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:297
BOOLEAN NTAPI CmpMarkIndexDirty(IN PHHIVE Hive, HCELL_INDEX ParentKey, HCELL_INDEX TargetKey)
BOOLEAN CMAPI CmpRepairValueListCount(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX CurrentCell, _In_ ULONG ListCountIndex, _Inout_ PCELL_DATA ValueListData, _In_ BOOLEAN FixHive)
Repairs the value list count of key due to corruption. The process involves by removing one damaged v...
Definition: cmheal.c:697
HCELL_INDEX NTAPI CmpFindValueByName(IN PHHIVE Hive, IN PCM_KEY_NODE KeyNode, IN PCUNICODE_STRING Name)
Definition: cmvalue.c:99
BOOLEAN CMAPI HvWriteAlternateHive(_In_ PHHIVE RegistryHive)
Writes data to an alternate registry hive. An alternate hive is usually backed up by a primary hive....
Definition: hivewrt.c:634
BOOLEAN CMAPI CmpRepairSubKeyCounts(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX CurrentCell, _In_ ULONG Count, _Inout_ PCELL_DATA CellData, _In_ BOOLEAN FixHive)
Repairs the subkey list count due to corruption. The process involves by fixing the count itself with...
Definition: cmheal.c:830
struct _HV_HIVE_CELL_PAIR * PHV_HIVE_CELL_PAIR
BOOLEAN CMAPI CmpRepairSubKeyList(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX CurrentCell, _Inout_ PCELL_DATA CellData, _In_ BOOLEAN FixHive)
Repairs the subkey list due to corruption. The process involves by purging the whole damaged subkeys ...
Definition: cmheal.c:884
BOOLEAN CMAPI CmpRepairParentKey(_Inout_ PHHIVE Hive, _In_ HCELL_INDEX TargetKey, _In_ HCELL_INDEX ParentKey, _In_ BOOLEAN FixHive)
Repairs the parent key from damage by removing the offending subkey cell.
Definition: cmheal.c:409
static BOOLEAN CmpIsKeyValueSmall(OUT PULONG RealLength, IN ULONG Length)
Definition: cmlib.h:411
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:298
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
ULONG CM_CHECK_REGISTRY_STATUS
Definition: cmlib.h:230
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:49
struct _HV_TRACK_CELL_REF HV_TRACK_CELL_REF
VOID CMAPI HvFree(PHHIVE RegistryHive)
BOOLEAN CMAPI HvWriteHive(PHHIVE RegistryHive)
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 RtlInitializeBitMap
Definition: dbgbitmap.h:326
#define RtlClearAllBits
Definition: dbgbitmap.h:329
#define RtlSetAllBits
Definition: dbgbitmap.h:346
#define RtlSetBits
Definition: dbgbitmap.h:345
#define RtlFindSetBits
Definition: dbgbitmap.h:340
LPWSTR Name
Definition: desk.c:124
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG DataLength
Definition: dispmprt.h:233
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static int Hash(const char *)
Definition: reader.c:2237
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:248
ULONG * PHCELL_INDEX
Definition: hivedata.h:105
HSTORAGE_TYPE
Definition: hivedata.h:126
#define HFILE_TYPE_MAX
Definition: hivedata.h:37
BOOLEAN(CMAPI * PFILE_WRITE_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PULONG FileOffset, PVOID Buffer, SIZE_T BufferLength)
Definition: hivedata.h:257
VOID(CMAPI * PFREE_ROUTINE)(PVOID Ptr, ULONG Quota)
Definition: hivedata.h:242
BOOLEAN(CMAPI * PFILE_FLUSH_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PLARGE_INTEGER FileOffset, ULONG Length)
Definition: hivedata.h:274
PVOID(CMAPI * PALLOCATE_ROUTINE)(SIZE_T Size, BOOLEAN Paged, ULONG Tag)
Definition: hivedata.h:235
ULONG HCELL_INDEX
Definition: hivedata.h:105
BOOLEAN(CMAPI * PFILE_SET_SIZE_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, ULONG FileSize, ULONG OldfileSize)
Definition: hivedata.h:266
#define HSYS_WHISTLER_BETA1
Definition: hivedata.h:71
WORD SECURITY_DESCRIPTOR_CONTROL
Definition: lsa.idl:37
WORD * PSECURITY_DESCRIPTOR_CONTROL
Definition: lsa.idl:37
static IStorage Storage
Definition: ole2.c:3412
_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_ ULONG Number
Definition: haltypes.h:1872
_In_ const STRING * String2
Definition: rtlfuncs.h:2404
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
Definition: rtlfuncs.h:1957
_In_ const STRING _In_ BOOLEAN CaseInSensitive
Definition: rtlfuncs.h:2437
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
Definition: rtlfuncs.h:3051
_Out_ _Inout_ POEM_STRING DestinationString
Definition: rtlfuncs.h:1956
WCHAR NTAPI RtlUpcaseUnicodeChar(_In_ WCHAR Source)
Definition: nlsboot.c:177
#define _Inout_
Definition: no_sal2.h:162
#define _In_
Definition: no_sal2.h:158
int Count
Definition: noreturn.cpp:7
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
Definition: cmlib.h:323
LONG SecurityHitHint
Definition: cmlib.h:350
ULONG FlushCount
Definition: cmlib.h:366
PKTHREAD HiveSecurityLockOwner
Definition: cmlib.h:336
HHIVE Hive
Definition: cmlib.h:324
BOOLEAN HiveIsLoading
Definition: cmlib.h:367
LIST_ENTRY NotifyList
Definition: cmlib.h:326
BOOLEAN Frozen
Definition: cmlib.h:355
PKGUARDED_MUTEX ViewLock
Definition: cmlib.h:330
LIST_ENTRY HiveList
Definition: cmlib.h:327
ULONG SecurityCount
Definition: cmlib.h:348
EX_PUSH_LOCK WriterLock
Definition: cmlib.h:332
USHORT MappedViews
Definition: cmlib.h:345
PKTHREAD HiveLockOwner
Definition: cmlib.h:329
PERESOURCE FlusherLock
Definition: cmlib.h:334
PKTHREAD WriterLockOwner
Definition: cmlib.h:333
ULONG UseCount
Definition: cmlib.h:347
BOOLEAN GrowOnlyMode
Definition: cmlib.h:357
LIST_ENTRY KnodeConvertListHead
Definition: cmlib.h:360
EX_PUSH_LOCK SecurityLock
Definition: cmlib.h:335
LIST_ENTRY SecurityHash[CMP_SECURITY_HASH_LISTS]
Definition: cmlib.h:352
PWORK_QUEUE_ITEM UnloadWorkItem
Definition: cmlib.h:356
PKTHREAD CreatorOwner
Definition: cmlib.h:368
LIST_ENTRY TrustClassEntry
Definition: cmlib.h:365
ULONG Flags
Definition: cmlib.h:364
CM_USE_COUNT_LOG UseCountLog
Definition: cmlib.h:362
HANDLE FileHandles[HFILE_TYPE_MAX]
Definition: cmlib.h:325
LIST_ENTRY PinViewListHead
Definition: cmlib.h:338
LIST_ENTRY KcbConvertListHead
Definition: cmlib.h:359
PKEVENT UnloadEvent
Definition: cmlib.h:353
UNICODE_STRING FileUserName
Definition: cmlib.h:341
ULONG SecurityCacheSize
Definition: cmlib.h:349
PCM_KEY_SECURITY_CACHE_ENTRY SecurityCache
Definition: cmlib.h:351
PFILE_OBJECT FileObject
Definition: cmlib.h:339
PCM_KEY_CONTROL_BLOCK RootKcb
Definition: cmlib.h:354
LIST_ENTRY LRUViewListHead
Definition: cmlib.h:337
PKTHREAD ViewLockOwner
Definition: cmlib.h:331
PCM_CELL_REMAP_BLOCK CellRemapArray
Definition: cmlib.h:361
ULONG GrowOffset
Definition: cmlib.h:358
EX_PUSH_LOCK HiveLock
Definition: cmlib.h:328
USHORT PinnedViews
Definition: cmlib.h:346
CM_USE_COUNT_LOG LockHiveLog
Definition: cmlib.h:363
UNICODE_STRING FileFullPath
Definition: cmlib.h:340
UNICODE_STRING HiveRootPath
Definition: cmlib.h:343
Definition: cm.h:204
Definition: cmlib.h:307
HCELL_INDEX Cell
Definition: cmlib.h:308
USHORT Size
Definition: cmlib.h:315
USHORT Next
Definition: cmlib.h:314
CM_USE_COUNT_LOG_ENTRY Log[32]
Definition: cmlib.h:316
HCELL_INDEX Cell
Definition: cmlib.h:380
PHV_HIVE_CELL_PAIR CellArray
Definition: cmlib.h:388
HV_HIVE_CELL_PAIR StaticArray[STATIC_CELL_PAIR_COUNT]
Definition: cmlib.h:389
USHORT Count
Definition: cmlib.h:386
USHORT StaticCount
Definition: cmlib.h:390
Definition: typedefs.h:120
SECURITY_DESCRIPTOR_CONTROL Control
Definition: setypes.h:851
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
unsigned char UCHAR
Definition: typedefs.h:53
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:4071
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
Definition: wdfdevice.h:2747
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4539
_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 _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:815
* PFILE_OBJECT
Definition: iotypes.h:1998
_In_ ULONG NumberToFind
Definition: rtlfuncs.h:612
_In_ ULONG _In_ ULONG HintIndex
Definition: rtlfuncs.h:613
_In_ ULONG StartingIndex
Definition: rtlfuncs.h:398
struct _SECURITY_DESCRIPTOR_RELATIVE * PISECURITY_DESCRIPTOR_RELATIVE
struct _SECURITY_DESCRIPTOR_RELATIVE SECURITY_DESCRIPTOR_RELATIVE