diff options
Diffstat (limited to 'src/burn/engine/cache.h')
-rw-r--r-- | src/burn/engine/cache.h | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/src/burn/engine/cache.h b/src/burn/engine/cache.h new file mode 100644 index 00000000..0152d33b --- /dev/null +++ b/src/burn/engine/cache.h | |||
@@ -0,0 +1,216 @@ | |||
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 | #define BURN_CACHE_MAX_SEARCH_PATHS 7 | ||
5 | |||
6 | #ifdef __cplusplus | ||
7 | extern "C" { | ||
8 | #endif | ||
9 | |||
10 | |||
11 | enum BURN_CACHE_MESSAGE_TYPE | ||
12 | { | ||
13 | BURN_CACHE_MESSAGE_BEGIN, | ||
14 | BURN_CACHE_MESSAGE_SUCCESS, | ||
15 | BURN_CACHE_MESSAGE_COMPLETE, | ||
16 | }; | ||
17 | |||
18 | enum BURN_CACHE_STEP | ||
19 | { | ||
20 | BURN_CACHE_STEP_HASH_TO_SKIP_ACQUIRE, | ||
21 | BURN_CACHE_STEP_HASH_TO_SKIP_VERIFY, | ||
22 | BURN_CACHE_STEP_STAGE, | ||
23 | BURN_CACHE_STEP_HASH, | ||
24 | BURN_CACHE_STEP_FINALIZE, | ||
25 | }; | ||
26 | |||
27 | typedef struct _BURN_CACHE_MESSAGE | ||
28 | { | ||
29 | BURN_CACHE_MESSAGE_TYPE type; | ||
30 | |||
31 | union | ||
32 | { | ||
33 | struct | ||
34 | { | ||
35 | BURN_CACHE_STEP cacheStep; | ||
36 | } begin; | ||
37 | struct | ||
38 | { | ||
39 | DWORD64 qwFileSize; | ||
40 | } success; | ||
41 | struct | ||
42 | { | ||
43 | HRESULT hrStatus; | ||
44 | } complete; | ||
45 | }; | ||
46 | } BURN_CACHE_MESSAGE; | ||
47 | |||
48 | typedef HRESULT(CALLBACK* PFN_BURNCACHEMESSAGEHANDLER)( | ||
49 | __in BURN_CACHE_MESSAGE* pMessage, | ||
50 | __in LPVOID pvContext | ||
51 | ); | ||
52 | |||
53 | // functions | ||
54 | |||
55 | HRESULT CacheInitialize( | ||
56 | __in BURN_REGISTRATION* pRegistration, | ||
57 | __in BURN_VARIABLES* pVariables, | ||
58 | __in_z_opt LPCWSTR wzSourceProcessPath | ||
59 | ); | ||
60 | HRESULT CacheEnsureWorkingFolder( | ||
61 | __in_z_opt LPCWSTR wzBundleId, | ||
62 | __deref_out_z_opt LPWSTR* psczWorkingFolder | ||
63 | ); | ||
64 | HRESULT CacheCalculateBundleWorkingPath( | ||
65 | __in_z LPCWSTR wzBundleId, | ||
66 | __in LPCWSTR wzExecutableName, | ||
67 | __deref_out_z LPWSTR* psczWorkingPath | ||
68 | ); | ||
69 | HRESULT CacheCalculateBundleLayoutWorkingPath( | ||
70 | __in_z LPCWSTR wzBundleId, | ||
71 | __deref_out_z LPWSTR* psczWorkingPath | ||
72 | ); | ||
73 | HRESULT CacheCalculatePayloadWorkingPath( | ||
74 | __in_z LPCWSTR wzBundleId, | ||
75 | __in BURN_PAYLOAD* pPayload, | ||
76 | __deref_out_z LPWSTR* psczWorkingPath | ||
77 | ); | ||
78 | HRESULT CacheCalculateContainerWorkingPath( | ||
79 | __in_z LPCWSTR wzBundleId, | ||
80 | __in BURN_CONTAINER* pContainer, | ||
81 | __deref_out_z LPWSTR* psczWorkingPath | ||
82 | ); | ||
83 | HRESULT CacheGetRootCompletedPath( | ||
84 | __in BOOL fPerMachine, | ||
85 | __in BOOL fForceInitialize, | ||
86 | __deref_out_z LPWSTR* psczRootCompletedPath | ||
87 | ); | ||
88 | HRESULT CacheGetCompletedPath( | ||
89 | __in BOOL fPerMachine, | ||
90 | __in_z LPCWSTR wzCacheId, | ||
91 | __deref_out_z LPWSTR* psczCompletedPath | ||
92 | ); | ||
93 | HRESULT CacheGetResumePath( | ||
94 | __in_z LPCWSTR wzPayloadWorkingPath, | ||
95 | __deref_out_z LPWSTR* psczResumePath | ||
96 | ); | ||
97 | HRESULT CacheGetLocalSourcePaths( | ||
98 | __in_z LPCWSTR wzRelativePath, | ||
99 | __in_z LPCWSTR wzSourcePath, | ||
100 | __in_z LPCWSTR wzDestinationPath, | ||
101 | __in_z_opt LPCWSTR wzLayoutDirectory, | ||
102 | __in BURN_VARIABLES* pVariables, | ||
103 | __inout LPWSTR** prgSearchPaths, | ||
104 | __out DWORD* pcSearchPaths, | ||
105 | __out DWORD* pdwLikelySearchPath, | ||
106 | __out DWORD* pdwDestinationSearchPath | ||
107 | ); | ||
108 | HRESULT CacheSetLastUsedSource( | ||
109 | __in BURN_VARIABLES* pVariables, | ||
110 | __in_z LPCWSTR wzSourcePath, | ||
111 | __in_z LPCWSTR wzRelativePath | ||
112 | ); | ||
113 | HRESULT CacheSendProgressCallback( | ||
114 | __in DOWNLOAD_CACHE_CALLBACK* pCallback, | ||
115 | __in DWORD64 dw64Progress, | ||
116 | __in DWORD64 dw64Total, | ||
117 | __in HANDLE hDestinationFile | ||
118 | ); | ||
119 | void CacheSendErrorCallback( | ||
120 | __in DOWNLOAD_CACHE_CALLBACK* pCallback, | ||
121 | __in HRESULT hrError, | ||
122 | __in_z_opt LPCWSTR wzError, | ||
123 | __out_opt BOOL* pfRetry | ||
124 | ); | ||
125 | BOOL CacheBundleRunningFromCache(); | ||
126 | HRESULT CacheBundleToCleanRoom( | ||
127 | __in BURN_SECTION* pSection, | ||
128 | __deref_out_z_opt LPWSTR* psczCleanRoomBundlePath | ||
129 | ); | ||
130 | HRESULT CacheBundleToWorkingDirectory( | ||
131 | __in_z LPCWSTR wzBundleId, | ||
132 | __in_z LPCWSTR wzExecutableName, | ||
133 | __in BURN_SECTION* pSection, | ||
134 | __deref_out_z_opt LPWSTR* psczEngineWorkingPath | ||
135 | ); | ||
136 | HRESULT CacheLayoutBundle( | ||
137 | __in_z LPCWSTR wzExecutableName, | ||
138 | __in_z LPCWSTR wzLayoutDirectory, | ||
139 | __in_z LPCWSTR wzSourceBundlePath, | ||
140 | __in DWORD64 qwBundleSize, | ||
141 | __in PFN_BURNCACHEMESSAGEHANDLER pfnCacheMessageHandler, | ||
142 | __in LPPROGRESS_ROUTINE pfnProgress, | ||
143 | __in LPVOID pContext | ||
144 | ); | ||
145 | HRESULT CacheCompleteBundle( | ||
146 | __in BOOL fPerMachine, | ||
147 | __in_z LPCWSTR wzExecutableName, | ||
148 | __in_z LPCWSTR wzBundleId, | ||
149 | __in_z LPCWSTR wzSourceBundlePath | ||
150 | #ifdef DEBUG | ||
151 | , __in_z LPCWSTR wzExecutablePath | ||
152 | #endif | ||
153 | ); | ||
154 | HRESULT CacheLayoutContainer( | ||
155 | __in BURN_CONTAINER* pContainer, | ||
156 | __in_z_opt LPCWSTR wzLayoutDirectory, | ||
157 | __in_z LPCWSTR wzUnverifiedContainerPath, | ||
158 | __in BOOL fMove, | ||
159 | __in PFN_BURNCACHEMESSAGEHANDLER pfnCacheMessageHandler, | ||
160 | __in LPPROGRESS_ROUTINE pfnProgress, | ||
161 | __in LPVOID pContext | ||
162 | ); | ||
163 | HRESULT CacheLayoutPayload( | ||
164 | __in BURN_PAYLOAD* pPayload, | ||
165 | __in_z_opt LPCWSTR wzLayoutDirectory, | ||
166 | __in_z LPCWSTR wzUnverifiedPayloadPath, | ||
167 | __in BOOL fMove, | ||
168 | __in PFN_BURNCACHEMESSAGEHANDLER pfnCacheMessageHandler, | ||
169 | __in LPPROGRESS_ROUTINE pfnProgress, | ||
170 | __in LPVOID pContext | ||
171 | ); | ||
172 | HRESULT CacheCompletePayload( | ||
173 | __in BOOL fPerMachine, | ||
174 | __in BURN_PAYLOAD* pPayload, | ||
175 | __in_z LPCWSTR wzCacheId, | ||
176 | __in_z LPCWSTR wzUnverifiedPayloadPath, | ||
177 | __in BOOL fMove, | ||
178 | __in PFN_BURNCACHEMESSAGEHANDLER pfnCacheMessageHandler, | ||
179 | __in LPPROGRESS_ROUTINE pfnProgress, | ||
180 | __in LPVOID pContext | ||
181 | ); | ||
182 | HRESULT CacheVerifyContainer( | ||
183 | __in BURN_CONTAINER* pContainer, | ||
184 | __in_z LPCWSTR wzCachedDirectory, | ||
185 | __in PFN_BURNCACHEMESSAGEHANDLER pfnCacheMessageHandler, | ||
186 | __in LPPROGRESS_ROUTINE pfnProgress, | ||
187 | __in LPVOID pContext | ||
188 | ); | ||
189 | HRESULT CacheVerifyPayload( | ||
190 | __in BURN_PAYLOAD* pPayload, | ||
191 | __in_z LPCWSTR wzCachedDirectory, | ||
192 | __in PFN_BURNCACHEMESSAGEHANDLER pfnCacheMessageHandler, | ||
193 | __in LPPROGRESS_ROUTINE pfnProgress, | ||
194 | __in LPVOID pContext | ||
195 | ); | ||
196 | HRESULT CacheRemoveWorkingFolder( | ||
197 | __in_z_opt LPCWSTR wzBundleId | ||
198 | ); | ||
199 | HRESULT CacheRemoveBundle( | ||
200 | __in BOOL fPerMachine, | ||
201 | __in_z LPCWSTR wzPackageId | ||
202 | ); | ||
203 | HRESULT CacheRemovePackage( | ||
204 | __in BOOL fPerMachine, | ||
205 | __in_z LPCWSTR wzPackageId, | ||
206 | __in_z LPCWSTR wzCacheId | ||
207 | ); | ||
208 | void CacheCleanup( | ||
209 | __in BOOL fPerMachine, | ||
210 | __in_z LPCWSTR wzBundleId | ||
211 | ); | ||
212 | void CacheUninitialize(); | ||
213 | |||
214 | #ifdef __cplusplus | ||
215 | } | ||
216 | #endif | ||