summaryrefslogtreecommitdiff
path: root/src/burn/engine/variable.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/variable.h')
-rw-r--r--src/burn/engine/variable.h185
1 files changed, 185 insertions, 0 deletions
diff --git a/src/burn/engine/variable.h b/src/burn/engine/variable.h
new file mode 100644
index 00000000..a38c9daa
--- /dev/null
+++ b/src/burn/engine/variable.h
@@ -0,0 +1,185 @@
1#pragma once
2// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3
4
5#if defined(__cplusplus)
6extern "C" {
7#endif
8
9
10// constants
11
12const LPCWSTR VARIABLE_DATE = L"Date";
13const LPCWSTR VARIABLE_LOGONUSER = L"LogonUser";
14const LPCWSTR VARIABLE_INSTALLERNAME = L"InstallerName";
15const LPCWSTR VARIABLE_INSTALLERVERSION = L"InstallerVersion";
16
17
18// typedefs
19
20typedef HRESULT (*PFN_INITIALIZEVARIABLE)(
21 __in DWORD_PTR dwpData,
22 __inout BURN_VARIANT* pValue
23 );
24
25
26// constants
27
28enum BURN_VARIABLE_INTERNAL_TYPE
29{
30 BURN_VARIABLE_INTERNAL_TYPE_NORMAL, // the BA can set this variable.
31 BURN_VARIABLE_INTERNAL_TYPE_OVERRIDABLE_BUILTIN, // the BA can't set this variable, but the unelevated process can serialize it to the elevated process.
32 BURN_VARIABLE_INTERNAL_TYPE_BUILTIN, // the BA can't set this variable, and the unelevated process can't serialize it to the elevated process.
33};
34
35
36// structs
37
38typedef struct _BURN_VARIABLE
39{
40 LPWSTR sczName;
41 BURN_VARIANT Value;
42 BOOL fHidden;
43 BOOL fPersisted;
44
45 // used for late initialization of built-in variables
46 BURN_VARIABLE_INTERNAL_TYPE internalType;
47 PFN_INITIALIZEVARIABLE pfnInitialize;
48 DWORD_PTR dwpInitializeData;
49} BURN_VARIABLE;
50
51typedef struct _BURN_VARIABLES
52{
53 CRITICAL_SECTION csAccess;
54 DWORD dwMaxVariables;
55 DWORD cVariables;
56 BURN_VARIABLE* rgVariables;
57} BURN_VARIABLES;
58
59
60// function declarations
61
62HRESULT VariableInitialize(
63 __in BURN_VARIABLES* pVariables
64 );
65HRESULT VariablesParseFromXml(
66 __in BURN_VARIABLES* pVariables,
67 __in IXMLDOMNode* pixnBundle
68 );
69void VariablesUninitialize(
70 __in BURN_VARIABLES* pVariables
71 );
72void VariablesDump(
73 __in BURN_VARIABLES* pVariables
74 );
75HRESULT VariableGetNumeric(
76 __in BURN_VARIABLES* pVariables,
77 __in_z LPCWSTR wzVariable,
78 __out LONGLONG* pllValue
79 );
80HRESULT VariableGetString(
81 __in BURN_VARIABLES* pVariables,
82 __in_z LPCWSTR wzVariable,
83 __out_z LPWSTR* psczValue
84 );
85HRESULT VariableGetVersion(
86 __in BURN_VARIABLES* pVariables,
87 __in_z LPCWSTR wzVariable,
88 __in VERUTIL_VERSION** ppValue
89 );
90HRESULT VariableGetVariant(
91 __in BURN_VARIABLES* pVariables,
92 __in_z LPCWSTR wzVariable,
93 __in BURN_VARIANT* pValue
94 );
95HRESULT VariableGetFormatted(
96 __in BURN_VARIABLES* pVariables,
97 __in_z LPCWSTR wzVariable,
98 __out_z LPWSTR* psczValue,
99 __out BOOL* pfContainsHiddenVariable
100 );
101HRESULT VariableSetNumeric(
102 __in BURN_VARIABLES* pVariables,
103 __in_z LPCWSTR wzVariable,
104 __in LONGLONG llValue,
105 __in BOOL fOverwriteBuiltIn
106 );
107HRESULT VariableSetString(
108 __in BURN_VARIABLES* pVariables,
109 __in_z LPCWSTR wzVariable,
110 __in_z_opt LPCWSTR wzValue,
111 __in BOOL fOverwriteBuiltIn,
112 __in BOOL fFormatted
113 );
114HRESULT VariableSetVersion(
115 __in BURN_VARIABLES* pVariables,
116 __in_z LPCWSTR wzVariable,
117 __in VERUTIL_VERSION* pValue,
118 __in BOOL fOverwriteBuiltIn
119 );
120HRESULT VariableSetVariant(
121 __in BURN_VARIABLES* pVariables,
122 __in_z LPCWSTR wzVariable,
123 __in BURN_VARIANT* pVariant
124 );
125HRESULT VariableFormatString(
126 __in BURN_VARIABLES* pVariables,
127 __in_z LPCWSTR wzIn,
128 __out_z_opt LPWSTR* psczOut,
129 __out_opt SIZE_T* pcchOut
130 );
131HRESULT VariableFormatStringObfuscated(
132 __in BURN_VARIABLES* pVariables,
133 __in_z LPCWSTR wzIn,
134 __out_z_opt LPWSTR* psczOut,
135 __out_opt SIZE_T* pcchOut
136 );
137HRESULT VariableEscapeString(
138 __in_z LPCWSTR wzIn,
139 __out_z LPWSTR* psczOut
140 );
141HRESULT VariableSerialize(
142 __in BURN_VARIABLES* pVariables,
143 __in BOOL fPersisting,
144 __inout BYTE** ppbBuffer,
145 __inout SIZE_T* piBuffer
146 );
147HRESULT VariableDeserialize(
148 __in BURN_VARIABLES* pVariables,
149 __in BOOL fWasPersisted,
150 __in_bcount(cbBuffer) BYTE* pbBuffer,
151 __in SIZE_T cbBuffer,
152 __inout SIZE_T* piBuffer
153 );
154HRESULT VariableStrAlloc(
155 __in BOOL fZeroOnRealloc,
156 __deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
157 __in DWORD_PTR cch
158 );
159HRESULT VariableStrAllocString(
160 __in BOOL fZeroOnRealloc,
161 __deref_out_ecount_z(cchSource + 1) LPWSTR* ppwz,
162 __in_z LPCWSTR wzSource,
163 __in DWORD_PTR cchSource
164 );
165HRESULT VariableStrAllocConcat(
166 __in BOOL fZeroOnRealloc,
167 __deref_out_z LPWSTR* ppwz,
168 __in_z LPCWSTR wzSource,
169 __in DWORD_PTR cchSource
170 );
171HRESULT __cdecl VariableStrAllocFormatted(
172 __in BOOL fZeroOnRealloc,
173 __deref_out_z LPWSTR* ppwz,
174 __in __format_string LPCWSTR wzFormat,
175 ...
176 );
177HRESULT VariableIsHidden(
178 __in BURN_VARIABLES* pVariables,
179 __in_z LPCWSTR wzVariable,
180 __out BOOL* pfHidden
181 );
182
183#if defined(__cplusplus)
184}
185#endif