aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/cache.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/cache.h')
-rw-r--r--src/burn/engine/cache.h216
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
7extern "C" {
8#endif
9
10
11enum BURN_CACHE_MESSAGE_TYPE
12{
13 BURN_CACHE_MESSAGE_BEGIN,
14 BURN_CACHE_MESSAGE_SUCCESS,
15 BURN_CACHE_MESSAGE_COMPLETE,
16};
17
18enum 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
27typedef 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
48typedef HRESULT(CALLBACK* PFN_BURNCACHEMESSAGEHANDLER)(
49 __in BURN_CACHE_MESSAGE* pMessage,
50 __in LPVOID pvContext
51 );
52
53// functions
54
55HRESULT CacheInitialize(
56 __in BURN_REGISTRATION* pRegistration,
57 __in BURN_VARIABLES* pVariables,
58 __in_z_opt LPCWSTR wzSourceProcessPath
59 );
60HRESULT CacheEnsureWorkingFolder(
61 __in_z_opt LPCWSTR wzBundleId,
62 __deref_out_z_opt LPWSTR* psczWorkingFolder
63 );
64HRESULT CacheCalculateBundleWorkingPath(
65 __in_z LPCWSTR wzBundleId,
66 __in LPCWSTR wzExecutableName,
67 __deref_out_z LPWSTR* psczWorkingPath
68 );
69HRESULT CacheCalculateBundleLayoutWorkingPath(
70 __in_z LPCWSTR wzBundleId,
71 __deref_out_z LPWSTR* psczWorkingPath
72 );
73HRESULT CacheCalculatePayloadWorkingPath(
74 __in_z LPCWSTR wzBundleId,
75 __in BURN_PAYLOAD* pPayload,
76 __deref_out_z LPWSTR* psczWorkingPath
77 );
78HRESULT CacheCalculateContainerWorkingPath(
79 __in_z LPCWSTR wzBundleId,
80 __in BURN_CONTAINER* pContainer,
81 __deref_out_z LPWSTR* psczWorkingPath
82 );
83HRESULT CacheGetRootCompletedPath(
84 __in BOOL fPerMachine,
85 __in BOOL fForceInitialize,
86 __deref_out_z LPWSTR* psczRootCompletedPath
87 );
88HRESULT CacheGetCompletedPath(
89 __in BOOL fPerMachine,
90 __in_z LPCWSTR wzCacheId,
91 __deref_out_z LPWSTR* psczCompletedPath
92 );
93HRESULT CacheGetResumePath(
94 __in_z LPCWSTR wzPayloadWorkingPath,
95 __deref_out_z LPWSTR* psczResumePath
96 );
97HRESULT 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 );
108HRESULT CacheSetLastUsedSource(
109 __in BURN_VARIABLES* pVariables,
110 __in_z LPCWSTR wzSourcePath,
111 __in_z LPCWSTR wzRelativePath
112 );
113HRESULT CacheSendProgressCallback(
114 __in DOWNLOAD_CACHE_CALLBACK* pCallback,
115 __in DWORD64 dw64Progress,
116 __in DWORD64 dw64Total,
117 __in HANDLE hDestinationFile
118 );
119void CacheSendErrorCallback(
120 __in DOWNLOAD_CACHE_CALLBACK* pCallback,
121 __in HRESULT hrError,
122 __in_z_opt LPCWSTR wzError,
123 __out_opt BOOL* pfRetry
124 );
125BOOL CacheBundleRunningFromCache();
126HRESULT CacheBundleToCleanRoom(
127 __in BURN_SECTION* pSection,
128 __deref_out_z_opt LPWSTR* psczCleanRoomBundlePath
129 );
130HRESULT CacheBundleToWorkingDirectory(
131 __in_z LPCWSTR wzBundleId,
132 __in_z LPCWSTR wzExecutableName,
133 __in BURN_SECTION* pSection,
134 __deref_out_z_opt LPWSTR* psczEngineWorkingPath
135 );
136HRESULT 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 );
145HRESULT 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 );
154HRESULT 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 );
163HRESULT 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 );
172HRESULT 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 );
182HRESULT 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 );
189HRESULT 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 );
196HRESULT CacheRemoveWorkingFolder(
197 __in_z_opt LPCWSTR wzBundleId
198 );
199HRESULT CacheRemoveBundle(
200 __in BOOL fPerMachine,
201 __in_z LPCWSTR wzPackageId
202 );
203HRESULT CacheRemovePackage(
204 __in BOOL fPerMachine,
205 __in_z LPCWSTR wzPackageId,
206 __in_z LPCWSTR wzCacheId
207 );
208void CacheCleanup(
209 __in BOOL fPerMachine,
210 __in_z LPCWSTR wzBundleId
211 );
212void CacheUninitialize();
213
214#ifdef __cplusplus
215}
216#endif