VirtualBox

source: vbox/trunk/src/VBox/VMM/CFGMInternal.h@ 23495

Last change on this file since 23495 was 22526, checked in by vboxsync, 15 years ago

CFGM: Fixed string length bug in CFGMR3InsertStringFV.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.2 KB
Line 
1/* $Id: CFGMInternal.h 22526 2009-08-27 13:52:56Z vboxsync $ */
2/** @file
3 * CFGM - Internal header file.
4 */
5
6/*
7 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18 * Clara, CA 95054 USA or visit http://www.sun.com if you need
19 * additional information or have any questions.
20 */
21
22#ifndef ___CFGMInternal_h
23#define ___CFGMInternal_h
24
25#include <VBox/cdefs.h>
26#include <VBox/types.h>
27
28
29/** @defgroup grp_cfgm_int Internals.
30 * @ingroup grp_cfgm
31 * @{
32 */
33
34
35/**
36 * Configuration manager propertype value.
37 */
38typedef union CFGMVALUE
39{
40 /** Integer value. */
41 struct CFGMVALUE_INTEGER
42 {
43 /** The integer represented as 64-bit unsigned. */
44 uint64_t u64;
45 } Integer;
46
47 /** String value. (UTF-8 of course) */
48 struct CFGMVALUE_STRING
49 {
50 /** Length of string. (In bytes, including the terminator.) */
51 size_t cb;
52 /** Pointer to the string. */
53 char *psz;
54 } String;
55
56 /** Byte string value. */
57 struct CFGMVALUE_BYTES
58 {
59 /** Length of byte string. (in bytes) */
60 size_t cb;
61 /** Pointer to the byte string. */
62 uint8_t *pau8;
63 } Bytes;
64} CFGMVALUE;
65/** Pointer to configuration manager property value. */
66typedef CFGMVALUE *PCFGMVALUE;
67
68
69/**
70 * Configuration manager tree node.
71 */
72typedef struct CFGMLEAF
73{
74 /** Pointer to the next leaf. */
75 PCFGMLEAF pNext;
76 /** Pointer to the previous leaf. */
77 PCFGMLEAF pPrev;
78
79 /** Property type. */
80 CFGMVALUETYPE enmType;
81 /** Property value. */
82 CFGMVALUE Value;
83
84 /** Name length. (exclusive) */
85 size_t cchName;
86 /** Name. */
87 char szName[1];
88} CFGMLEAF;
89
90
91/**
92 * Configuration manager tree node.
93 */
94typedef struct CFGMNODE
95{
96 /** Pointer to the next node (on this level). */
97 PCFGMNODE pNext;
98 /** Pointer to the previuos node (on this level). */
99 PCFGMNODE pPrev;
100 /** Pointer Parent node. */
101 PCFGMNODE pParent;
102 /** Pointer to first child node. */
103 PCFGMNODE pFirstChild;
104 /** Pointer to first property leaf. */
105 PCFGMLEAF pFirstLeaf;
106
107 /** Pointer to the VM owning this node. */
108 PVM pVM;
109
110 /** The root of a 'restricted' subtree, i.e. the parent is
111 * invisible to non-trusted users.
112 */
113 bool fRestrictedRoot;
114
115 /** Name length. (exclusive) */
116 size_t cchName;
117 /** Name. */
118 char szName[1];
119} CFGMNODE;
120
121
122
123/**
124 * CFGM VM Instance data.
125 * Changes to this must checked against the padding of the cfgm union in VM!
126 */
127typedef struct CFGM
128{
129 /** Pointer to root node. */
130 R3PTRTYPE(PCFGMNODE) pRoot;
131} CFGM;
132
133/** @} */
134
135#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette