ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

cmdata.h
Go to the documentation of this file.
00001 /*
00002  * PROJECT:   registry manipulation library
00003  * LICENSE:   GPL - See COPYING in the top level directory
00004  * COPYRIGHT: Copyright 2005 Filip Navara <navaraf@reactos.org>
00005  *            Copyright 2001 - 2005 Eric Kohl
00006  */
00007 
00008 #pragma once
00009 
00010 #define  REG_INIT_BLOCK_LIST_SIZE      32
00011 #define  REG_INIT_HASH_TABLE_SIZE      3
00012 #define  REG_EXTEND_HASH_TABLE_SIZE    4
00013 #define  REG_VALUE_LIST_CELL_MULTIPLE  4
00014 
00015 //
00016 // Key Types
00017 //
00018 #define CM_KEY_INDEX_ROOT                               0x6972
00019 #define CM_KEY_INDEX_LEAF                               0x696c
00020 #define CM_KEY_FAST_LEAF                                0x666c
00021 #define CM_KEY_HASH_LEAF                                0x686c
00022 
00023 //
00024 // Key Signatures
00025 //
00026 #define CM_KEY_NODE_SIGNATURE                           0x6B6E
00027 #define CM_LINK_NODE_SIGNATURE                          0x6B6C
00028 #define CM_KEY_VALUE_SIGNATURE                          0x6B76
00029 
00030 //
00031 // CM_KEY_NODE Flags
00032 //
00033 #define KEY_IS_VOLATILE                                 0x01
00034 #define KEY_HIVE_EXIT                                   0x02
00035 #define KEY_HIVE_ENTRY                                  0x04
00036 #define KEY_NO_DELETE                                   0x08
00037 #define KEY_SYM_LINK                                    0x10
00038 #define KEY_COMP_NAME                                   0x20
00039 #define KEY_PREFEF_HANDLE                               0x40
00040 #define KEY_VIRT_MIRRORED                               0x80
00041 #define KEY_VIRT_TARGET                                 0x100
00042 #define KEY_VIRTUAL_STORE                               0x200
00043 
00044 //
00045 // CM_KEY_VALUE Flags
00046 //
00047 #define VALUE_COMP_NAME                                 0x0001
00048 
00049 #include <pshpack1.h>
00050 
00051 //
00052 // For memory-mapped Hives
00053 //
00054 typedef struct _CM_VIEW_OF_FILE
00055 {
00056     LIST_ENTRY LRUViewList;
00057     LIST_ENTRY PinViewList;
00058     ULONG FileOffset;
00059     ULONG Size;
00060     PULONG_PTR ViewAddress;
00061     PVOID Bcb;
00062     ULONG UseCount;
00063 } CM_VIEW_OF_FILE, *PCM_VIEW_OF_FILE;
00064 
00065 //
00066 // Children of Key Notes
00067 //
00068 typedef struct _CHILD_LIST
00069 {
00070     ULONG Count;
00071     HCELL_INDEX List;
00072 } CHILD_LIST, *PCHILD_LIST;
00073 
00074 //
00075 // Node Key Reference to Parents
00076 //
00077 typedef struct  _CM_KEY_REFERENCE
00078 {
00079     HCELL_INDEX KeyCell;
00080     PHHIVE KeyHive;
00081 } CM_KEY_REFERENCE, *PCM_KEY_REFERENCE;
00082 
00083 //
00084 // Node Key
00085 //
00086 typedef struct _CM_KEY_NODE
00087 {
00088     USHORT Signature;
00089     USHORT Flags;
00090     LARGE_INTEGER LastWriteTime;
00091     ULONG Spare;
00092     HCELL_INDEX Parent;
00093     ULONG SubKeyCounts[HTYPE_COUNT];
00094     union
00095     {
00096         struct
00097         {
00098             HCELL_INDEX SubKeyLists[HTYPE_COUNT];
00099             CHILD_LIST ValueList;
00100         };
00101         CM_KEY_REFERENCE ChildHiveReference;
00102     };
00103     HCELL_INDEX Security;
00104     HCELL_INDEX Class;
00105     ULONG MaxNameLen;
00106     ULONG MaxClassLen;
00107     ULONG MaxValueNameLen;
00108     ULONG MaxValueDataLen;
00109     ULONG WorkVar;
00110     USHORT NameLength;
00111     USHORT ClassLength;
00112     WCHAR Name[ANYSIZE_ARRAY];
00113 } CM_KEY_NODE, *PCM_KEY_NODE;
00114 
00115 //
00116 // Value List
00117 //
00118 typedef struct _VALUE_LIST_CELL
00119 {
00120     HCELL_INDEX ValueOffset[ANYSIZE_ARRAY];
00121 } VALUE_LIST_CELL, *PVALUE_LIST_CELL;
00122 
00123 //
00124 // Value Key
00125 //
00126 typedef struct _CM_KEY_VALUE
00127 {
00128     USHORT Signature;
00129     USHORT NameLength;
00130     ULONG DataLength;
00131     HCELL_INDEX Data;
00132     ULONG Type;
00133     USHORT Flags;
00134     USHORT Unused1;
00135     WCHAR Name[ANYSIZE_ARRAY];
00136 } CM_KEY_VALUE, *PCM_KEY_VALUE;
00137 
00138 //
00139 // Security Key
00140 //
00141 typedef struct _CM_KEY_SECURITY
00142 {
00143     USHORT Signature;
00144     USHORT Reserved;
00145     HCELL_INDEX Flink;
00146     HCELL_INDEX Blink;
00147     ULONG ReferenceCount;
00148     ULONG DescriptorLength;
00149     //SECURITY_DESCRIPTOR_RELATIVE Descriptor;
00150     UCHAR Data[ANYSIZE_ARRAY];
00151 } CM_KEY_SECURITY, *PCM_KEY_SECURITY;
00152 
00153 #include <poppack.h>
00154 
00155 //
00156 // Generic Index Entry
00157 //
00158 typedef struct _CM_INDEX
00159 {
00160     HCELL_INDEX Cell;
00161     union
00162     {
00163         UCHAR NameHint[4];
00164         ULONG HashKey;
00165     };
00166 } CM_INDEX, *PCM_INDEX;
00167 
00168 //
00169 // Key Index
00170 //
00171 typedef struct _CM_KEY_INDEX
00172 {
00173     USHORT Signature;
00174     USHORT Count;
00175     HCELL_INDEX List[ANYSIZE_ARRAY];
00176 } CM_KEY_INDEX, *PCM_KEY_INDEX;
00177 
00178 //
00179 // Fast/Hash Key Index
00180 //
00181 typedef struct _CM_KEY_FAST_INDEX
00182 {
00183     USHORT Signature;
00184     USHORT Count;
00185     CM_INDEX List[ANYSIZE_ARRAY];
00186 } CM_KEY_FAST_INDEX, *PCM_KEY_FAST_INDEX;
00187 
00188 //
00189 // Cell Data
00190 //
00191 typedef struct _CELL_DATA
00192 {
00193     union
00194     {
00195         CM_KEY_NODE KeyNode;
00196         CM_KEY_VALUE KeyValue;
00197         CM_KEY_SECURITY KeySecurity;
00198         CM_KEY_INDEX KeyIndex;
00199         HCELL_INDEX KeyList[ANYSIZE_ARRAY];
00200         WCHAR KeyString[ANYSIZE_ARRAY];
00201     } u;
00202 } CELL_DATA, *PCELL_DATA;

Generated on Sun May 27 2012 04:35:56 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.