diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-08-03 15:41:18 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-08-04 10:03:57 -0500 |
commit | 6d7a275edafb3ae0f3cff94d66503a82dafb71f7 (patch) | |
tree | fae8f75e2cd1d7b179b0ed93e15625d68ba7c441 /src/burn/engine/elevation.cpp | |
parent | ed57d171f6fb6bb4e180696cc12caa568599566a (diff) | |
download | wix-6d7a275edafb3ae0f3cff94d66503a82dafb71f7.tar.gz wix-6d7a275edafb3ae0f3cff94d66503a82dafb71f7.tar.bz2 wix-6d7a275edafb3ae0f3cff94d66503a82dafb71f7.zip |
Replace static cache internals with a struct.
Initialize them explicitly to make it clearer when that happens.
Diffstat (limited to 'src/burn/engine/elevation.cpp')
-rw-r--r-- | src/burn/engine/elevation.cpp | 74 |
1 files changed, 49 insertions, 25 deletions
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp index db2a82a6..a0ad6685 100644 --- a/src/burn/engine/elevation.cpp +++ b/src/burn/engine/elevation.cpp | |||
@@ -88,6 +88,7 @@ typedef struct _BURN_ELEVATION_CHILD_MESSAGE_CONTEXT | |||
88 | HANDLE* phLock; | 88 | HANDLE* phLock; |
89 | BOOL* pfDisabledAutomaticUpdates; | 89 | BOOL* pfDisabledAutomaticUpdates; |
90 | BURN_APPROVED_EXES* pApprovedExes; | 90 | BURN_APPROVED_EXES* pApprovedExes; |
91 | BURN_CACHE* pCache; | ||
91 | BURN_CONTAINERS* pContainers; | 92 | BURN_CONTAINERS* pContainers; |
92 | BURN_PACKAGES* pPackages; | 93 | BURN_PACKAGES* pPackages; |
93 | BURN_PAYLOADS* pPayloads; | 94 | BURN_PAYLOADS* pPayloads; |
@@ -164,6 +165,7 @@ static HRESULT OnApplyUninitialize( | |||
164 | __in HANDLE* phLock | 165 | __in HANDLE* phLock |
165 | ); | 166 | ); |
166 | static HRESULT OnSessionBegin( | 167 | static HRESULT OnSessionBegin( |
168 | __in BURN_CACHE* pCache, | ||
167 | __in BURN_REGISTRATION* pRegistration, | 169 | __in BURN_REGISTRATION* pRegistration, |
168 | __in BURN_VARIABLES* pVariables, | 170 | __in BURN_VARIABLES* pVariables, |
169 | __in BYTE* pbData, | 171 | __in BYTE* pbData, |
@@ -176,6 +178,7 @@ static HRESULT OnSessionResume( | |||
176 | __in SIZE_T cbData | 178 | __in SIZE_T cbData |
177 | ); | 179 | ); |
178 | static HRESULT OnSessionEnd( | 180 | static HRESULT OnSessionEnd( |
181 | __in BURN_CACHE* pCache, | ||
179 | __in BURN_PACKAGES* pPackages, | 182 | __in BURN_PACKAGES* pPackages, |
180 | __in BURN_REGISTRATION* pRegistration, | 183 | __in BURN_REGISTRATION* pRegistration, |
181 | __in BURN_VARIABLES* pVariables, | 184 | __in BURN_VARIABLES* pVariables, |
@@ -188,12 +191,14 @@ static HRESULT OnSaveState( | |||
188 | __in SIZE_T cbData | 191 | __in SIZE_T cbData |
189 | ); | 192 | ); |
190 | static HRESULT OnCachePreparePackage( | 193 | static HRESULT OnCachePreparePackage( |
194 | __in BURN_CACHE* pCache, | ||
191 | __in BURN_PACKAGES* pPackages, | 195 | __in BURN_PACKAGES* pPackages, |
192 | __in BYTE* pbData, | 196 | __in BYTE* pbData, |
193 | __in SIZE_T cbData | 197 | __in SIZE_T cbData |
194 | ); | 198 | ); |
195 | static HRESULT OnCacheCompletePayload( | 199 | static HRESULT OnCacheCompletePayload( |
196 | __in HANDLE hPipe, | 200 | __in HANDLE hPipe, |
201 | __in BURN_CACHE* pCache, | ||
197 | __in BURN_PACKAGES* pPackages, | 202 | __in BURN_PACKAGES* pPackages, |
198 | __in BURN_PAYLOADS* pPayloads, | 203 | __in BURN_PAYLOADS* pPayloads, |
199 | __in BYTE* pbData, | 204 | __in BYTE* pbData, |
@@ -207,7 +212,7 @@ static HRESULT OnCacheVerifyPayload( | |||
207 | __in SIZE_T cbData | 212 | __in SIZE_T cbData |
208 | ); | 213 | ); |
209 | static void OnCacheCleanup( | 214 | static void OnCacheCleanup( |
210 | __in_z LPCWSTR wzBundleId | 215 | __in BURN_CACHE* pCache |
211 | ); | 216 | ); |
212 | static HRESULT OnProcessDependentRegistration( | 217 | static HRESULT OnProcessDependentRegistration( |
213 | __in const BURN_REGISTRATION* pRegistration, | 218 | __in const BURN_REGISTRATION* pRegistration, |
@@ -216,6 +221,7 @@ static HRESULT OnProcessDependentRegistration( | |||
216 | ); | 221 | ); |
217 | static HRESULT OnExecuteExePackage( | 222 | static HRESULT OnExecuteExePackage( |
218 | __in HANDLE hPipe, | 223 | __in HANDLE hPipe, |
224 | __in BURN_CACHE* pCache, | ||
219 | __in BURN_PACKAGES* pPackages, | 225 | __in BURN_PACKAGES* pPackages, |
220 | __in BURN_RELATED_BUNDLES* pRelatedBundles, | 226 | __in BURN_RELATED_BUNDLES* pRelatedBundles, |
221 | __in BURN_VARIABLES* pVariables, | 227 | __in BURN_VARIABLES* pVariables, |
@@ -224,6 +230,7 @@ static HRESULT OnExecuteExePackage( | |||
224 | ); | 230 | ); |
225 | static HRESULT OnExecuteMsiPackage( | 231 | static HRESULT OnExecuteMsiPackage( |
226 | __in HANDLE hPipe, | 232 | __in HANDLE hPipe, |
233 | __in BURN_CACHE* pCache, | ||
227 | __in BURN_PACKAGES* pPackages, | 234 | __in BURN_PACKAGES* pPackages, |
228 | __in BURN_VARIABLES* pVariables, | 235 | __in BURN_VARIABLES* pVariables, |
229 | __in BYTE* pbData, | 236 | __in BYTE* pbData, |
@@ -231,6 +238,7 @@ static HRESULT OnExecuteMsiPackage( | |||
231 | ); | 238 | ); |
232 | static HRESULT OnExecuteMspPackage( | 239 | static HRESULT OnExecuteMspPackage( |
233 | __in HANDLE hPipe, | 240 | __in HANDLE hPipe, |
241 | __in BURN_CACHE* pCache, | ||
234 | __in BURN_PACKAGES* pPackages, | 242 | __in BURN_PACKAGES* pPackages, |
235 | __in BURN_VARIABLES* pVariables, | 243 | __in BURN_VARIABLES* pVariables, |
236 | __in BYTE* pbData, | 244 | __in BYTE* pbData, |
@@ -238,6 +246,7 @@ static HRESULT OnExecuteMspPackage( | |||
238 | ); | 246 | ); |
239 | static HRESULT OnExecuteMsuPackage( | 247 | static HRESULT OnExecuteMsuPackage( |
240 | __in HANDLE hPipe, | 248 | __in HANDLE hPipe, |
249 | __in BURN_CACHE* pCache, | ||
241 | __in BURN_PACKAGES* pPackages, | 250 | __in BURN_PACKAGES* pPackages, |
242 | __in BURN_VARIABLES* pVariables, | 251 | __in BURN_VARIABLES* pVariables, |
243 | __in BYTE* pbData, | 252 | __in BYTE* pbData, |
@@ -279,6 +288,7 @@ static int MsiExecuteMessageHandler( | |||
279 | __in_opt LPVOID pvContext | 288 | __in_opt LPVOID pvContext |
280 | ); | 289 | ); |
281 | static HRESULT OnCleanPackage( | 290 | static HRESULT OnCleanPackage( |
291 | __in BURN_CACHE* pCache, | ||
282 | __in BURN_PACKAGES* pPackages, | 292 | __in BURN_PACKAGES* pPackages, |
283 | __in BYTE* pbData, | 293 | __in BYTE* pbData, |
284 | __in SIZE_T cbData | 294 | __in SIZE_T cbData |
@@ -286,6 +296,7 @@ static HRESULT OnCleanPackage( | |||
286 | static HRESULT OnLaunchApprovedExe( | 296 | static HRESULT OnLaunchApprovedExe( |
287 | __in HANDLE hPipe, | 297 | __in HANDLE hPipe, |
288 | __in BURN_APPROVED_EXES* pApprovedExes, | 298 | __in BURN_APPROVED_EXES* pApprovedExes, |
299 | __in BURN_CACHE* pCache, | ||
289 | __in BURN_VARIABLES* pVariables, | 300 | __in BURN_VARIABLES* pVariables, |
290 | __in BYTE* pbData, | 301 | __in BYTE* pbData, |
291 | __in SIZE_T cbData | 302 | __in SIZE_T cbData |
@@ -1284,6 +1295,7 @@ extern "C" HRESULT ElevationChildPumpMessages( | |||
1284 | __in HANDLE hPipe, | 1295 | __in HANDLE hPipe, |
1285 | __in HANDLE hCachePipe, | 1296 | __in HANDLE hCachePipe, |
1286 | __in BURN_APPROVED_EXES* pApprovedExes, | 1297 | __in BURN_APPROVED_EXES* pApprovedExes, |
1298 | __in BURN_CACHE* pCache, | ||
1287 | __in BURN_CONTAINERS* pContainers, | 1299 | __in BURN_CONTAINERS* pContainers, |
1288 | __in BURN_PACKAGES* pPackages, | 1300 | __in BURN_PACKAGES* pPackages, |
1289 | __in BURN_PAYLOADS* pPayloads, | 1301 | __in BURN_PAYLOADS* pPayloads, |
@@ -1304,6 +1316,7 @@ extern "C" HRESULT ElevationChildPumpMessages( | |||
1304 | 1316 | ||
1305 | cacheContext.dwLoggingTlsId = dwLoggingTlsId; | 1317 | cacheContext.dwLoggingTlsId = dwLoggingTlsId; |
1306 | cacheContext.hPipe = hCachePipe; | 1318 | cacheContext.hPipe = hCachePipe; |
1319 | cacheContext.pCache = pCache; | ||
1307 | cacheContext.pContainers = pContainers; | 1320 | cacheContext.pContainers = pContainers; |
1308 | cacheContext.pPackages = pPackages; | 1321 | cacheContext.pPackages = pPackages; |
1309 | cacheContext.pPayloads = pPayloads; | 1322 | cacheContext.pPayloads = pPayloads; |
@@ -1316,6 +1329,7 @@ extern "C" HRESULT ElevationChildPumpMessages( | |||
1316 | context.phLock = phLock; | 1329 | context.phLock = phLock; |
1317 | context.pfDisabledAutomaticUpdates = pfDisabledAutomaticUpdates; | 1330 | context.pfDisabledAutomaticUpdates = pfDisabledAutomaticUpdates; |
1318 | context.pApprovedExes = pApprovedExes; | 1331 | context.pApprovedExes = pApprovedExes; |
1332 | context.pCache = pCache; | ||
1319 | context.pContainers = pContainers; | 1333 | context.pContainers = pContainers; |
1320 | context.pPackages = pPackages; | 1334 | context.pPackages = pPackages; |
1321 | context.pPayloads = pPayloads; | 1335 | context.pPayloads = pPayloads; |
@@ -1826,7 +1840,7 @@ static HRESULT ProcessElevatedChildMessage( | |||
1826 | break; | 1840 | break; |
1827 | 1841 | ||
1828 | case BURN_ELEVATION_MESSAGE_TYPE_SESSION_BEGIN: | 1842 | case BURN_ELEVATION_MESSAGE_TYPE_SESSION_BEGIN: |
1829 | hrResult = OnSessionBegin(pContext->pRegistration, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); | 1843 | hrResult = OnSessionBegin(pContext->pCache, pContext->pRegistration, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); |
1830 | break; | 1844 | break; |
1831 | 1845 | ||
1832 | case BURN_ELEVATION_MESSAGE_TYPE_SESSION_RESUME: | 1846 | case BURN_ELEVATION_MESSAGE_TYPE_SESSION_RESUME: |
@@ -1834,7 +1848,7 @@ static HRESULT ProcessElevatedChildMessage( | |||
1834 | break; | 1848 | break; |
1835 | 1849 | ||
1836 | case BURN_ELEVATION_MESSAGE_TYPE_SESSION_END: | 1850 | case BURN_ELEVATION_MESSAGE_TYPE_SESSION_END: |
1837 | hrResult = OnSessionEnd(pContext->pPackages, pContext->pRegistration, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); | 1851 | hrResult = OnSessionEnd(pContext->pCache, pContext->pPackages, pContext->pRegistration, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); |
1838 | break; | 1852 | break; |
1839 | 1853 | ||
1840 | case BURN_ELEVATION_MESSAGE_TYPE_SAVE_STATE: | 1854 | case BURN_ELEVATION_MESSAGE_TYPE_SAVE_STATE: |
@@ -1846,19 +1860,19 @@ static HRESULT ProcessElevatedChildMessage( | |||
1846 | break; | 1860 | break; |
1847 | 1861 | ||
1848 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_EXE_PACKAGE: | 1862 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_EXE_PACKAGE: |
1849 | hrResult = OnExecuteExePackage(pContext->hPipe, pContext->pPackages, &pContext->pRegistration->relatedBundles, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); | 1863 | hrResult = OnExecuteExePackage(pContext->hPipe, pContext->pCache, pContext->pPackages, &pContext->pRegistration->relatedBundles, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); |
1850 | break; | 1864 | break; |
1851 | 1865 | ||
1852 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_PACKAGE: | 1866 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_PACKAGE: |
1853 | hrResult = OnExecuteMsiPackage(pContext->hPipe, pContext->pPackages, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); | 1867 | hrResult = OnExecuteMsiPackage(pContext->hPipe, pContext->pCache, pContext->pPackages, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); |
1854 | break; | 1868 | break; |
1855 | 1869 | ||
1856 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSP_PACKAGE: | 1870 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSP_PACKAGE: |
1857 | hrResult = OnExecuteMspPackage(pContext->hPipe, pContext->pPackages, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); | 1871 | hrResult = OnExecuteMspPackage(pContext->hPipe, pContext->pCache, pContext->pPackages, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); |
1858 | break; | 1872 | break; |
1859 | 1873 | ||
1860 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSU_PACKAGE: | 1874 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSU_PACKAGE: |
1861 | hrResult = OnExecuteMsuPackage(pContext->hPipe, pContext->pPackages, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); | 1875 | hrResult = OnExecuteMsuPackage(pContext->hPipe, pContext->pCache, pContext->pPackages, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); |
1862 | break; | 1876 | break; |
1863 | 1877 | ||
1864 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PACKAGE_PROVIDER: | 1878 | case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PACKAGE_PROVIDER: |
@@ -1870,11 +1884,11 @@ static HRESULT ProcessElevatedChildMessage( | |||
1870 | break; | 1884 | break; |
1871 | 1885 | ||
1872 | case BURN_ELEVATION_MESSAGE_TYPE_CLEAN_PACKAGE: | 1886 | case BURN_ELEVATION_MESSAGE_TYPE_CLEAN_PACKAGE: |
1873 | hrResult = OnCleanPackage(pContext->pPackages, (BYTE*)pMsg->pvData, pMsg->cbData); | 1887 | hrResult = OnCleanPackage(pContext->pCache, pContext->pPackages, (BYTE*)pMsg->pvData, pMsg->cbData); |
1874 | break; | 1888 | break; |
1875 | 1889 | ||
1876 | case BURN_ELEVATION_MESSAGE_TYPE_LAUNCH_APPROVED_EXE: | 1890 | case BURN_ELEVATION_MESSAGE_TYPE_LAUNCH_APPROVED_EXE: |
1877 | hrResult = OnLaunchApprovedExe(pContext->hPipe, pContext->pApprovedExes, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); | 1891 | hrResult = OnLaunchApprovedExe(pContext->hPipe, pContext->pApprovedExes, pContext->pCache, pContext->pVariables, (BYTE*)pMsg->pvData, pMsg->cbData); |
1878 | break; | 1892 | break; |
1879 | 1893 | ||
1880 | default: | 1894 | default: |
@@ -1901,11 +1915,11 @@ static HRESULT ProcessElevatedChildCacheMessage( | |||
1901 | switch (pMsg->dwMessage) | 1915 | switch (pMsg->dwMessage) |
1902 | { | 1916 | { |
1903 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_PREPARE_PACKAGE: | 1917 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_PREPARE_PACKAGE: |
1904 | hrResult = OnCachePreparePackage(pContext->pPackages, (BYTE*)pMsg->pvData, pMsg->cbData); | 1918 | hrResult = OnCachePreparePackage(pContext->pCache, pContext->pPackages, (BYTE*)pMsg->pvData, pMsg->cbData); |
1905 | break; | 1919 | break; |
1906 | 1920 | ||
1907 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_COMPLETE_PAYLOAD: | 1921 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_COMPLETE_PAYLOAD: |
1908 | hrResult = OnCacheCompletePayload(pContext->hPipe, pContext->pPackages, pContext->pPayloads, (BYTE*)pMsg->pvData, pMsg->cbData); | 1922 | hrResult = OnCacheCompletePayload(pContext->hPipe, pContext->pCache, pContext->pPackages, pContext->pPayloads, (BYTE*)pMsg->pvData, pMsg->cbData); |
1909 | break; | 1923 | break; |
1910 | 1924 | ||
1911 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_VERIFY_PAYLOAD: | 1925 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_VERIFY_PAYLOAD: |
@@ -1913,12 +1927,12 @@ static HRESULT ProcessElevatedChildCacheMessage( | |||
1913 | break; | 1927 | break; |
1914 | 1928 | ||
1915 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_CLEANUP: | 1929 | case BURN_ELEVATION_MESSAGE_TYPE_CACHE_CLEANUP: |
1916 | OnCacheCleanup(pContext->pRegistration->sczId); | 1930 | OnCacheCleanup(pContext->pCache); |
1917 | hrResult = S_OK; | 1931 | hrResult = S_OK; |
1918 | break; | 1932 | break; |
1919 | 1933 | ||
1920 | case BURN_ELEVATION_MESSAGE_TYPE_CLEAN_PACKAGE: | 1934 | case BURN_ELEVATION_MESSAGE_TYPE_CLEAN_PACKAGE: |
1921 | hrResult = OnCleanPackage(pContext->pPackages, (BYTE*)pMsg->pvData, pMsg->cbData); | 1935 | hrResult = OnCleanPackage(pContext->pCache, pContext->pPackages, (BYTE*)pMsg->pvData, pMsg->cbData); |
1922 | break; | 1936 | break; |
1923 | 1937 | ||
1924 | default: | 1938 | default: |
@@ -2080,6 +2094,7 @@ static HRESULT OnApplyUninitialize( | |||
2080 | } | 2094 | } |
2081 | 2095 | ||
2082 | static HRESULT OnSessionBegin( | 2096 | static HRESULT OnSessionBegin( |
2097 | __in BURN_CACHE* pCache, | ||
2083 | __in BURN_REGISTRATION* pRegistration, | 2098 | __in BURN_REGISTRATION* pRegistration, |
2084 | __in BURN_VARIABLES* pVariables, | 2099 | __in BURN_VARIABLES* pVariables, |
2085 | __in BYTE* pbData, | 2100 | __in BYTE* pbData, |
@@ -2120,7 +2135,7 @@ static HRESULT OnSessionBegin( | |||
2120 | ExitOnFailure(hr, "Failed to read variables."); | 2135 | ExitOnFailure(hr, "Failed to read variables."); |
2121 | 2136 | ||
2122 | // Begin session in per-machine process. | 2137 | // Begin session in per-machine process. |
2123 | hr = RegistrationSessionBegin(sczEngineWorkingPath, pRegistration, pVariables, dwRegistrationOperations, (BURN_DEPENDENCY_REGISTRATION_ACTION)dwDependencyRegistrationAction, qwEstimatedSize, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); | 2138 | hr = RegistrationSessionBegin(sczEngineWorkingPath, pRegistration, pCache, pVariables, dwRegistrationOperations, (BURN_DEPENDENCY_REGISTRATION_ACTION)dwDependencyRegistrationAction, qwEstimatedSize, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); |
2124 | ExitOnFailure(hr, "Failed to begin registration session."); | 2139 | ExitOnFailure(hr, "Failed to begin registration session."); |
2125 | 2140 | ||
2126 | LExit: | 2141 | LExit: |
@@ -2162,6 +2177,7 @@ LExit: | |||
2162 | } | 2177 | } |
2163 | 2178 | ||
2164 | static HRESULT OnSessionEnd( | 2179 | static HRESULT OnSessionEnd( |
2180 | __in BURN_CACHE* pCache, | ||
2165 | __in BURN_PACKAGES* pPackages, | 2181 | __in BURN_PACKAGES* pPackages, |
2166 | __in BURN_REGISTRATION* pRegistration, | 2182 | __in BURN_REGISTRATION* pRegistration, |
2167 | __in BURN_VARIABLES* pVariables, | 2183 | __in BURN_VARIABLES* pVariables, |
@@ -2190,7 +2206,7 @@ static HRESULT OnSessionEnd( | |||
2190 | ExitOnFailure(hr, "Failed to read dependency registration action."); | 2206 | ExitOnFailure(hr, "Failed to read dependency registration action."); |
2191 | 2207 | ||
2192 | // suspend session in per-machine process | 2208 | // suspend session in per-machine process |
2193 | hr = RegistrationSessionEnd(pRegistration, pVariables, pPackages, (BURN_RESUME_MODE)dwResumeMode, (BOOTSTRAPPER_APPLY_RESTART)dwRestart, (BURN_DEPENDENCY_REGISTRATION_ACTION)dwDependencyRegistrationAction, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); | 2209 | hr = RegistrationSessionEnd(pRegistration, pCache, pVariables, pPackages, (BURN_RESUME_MODE)dwResumeMode, (BOOTSTRAPPER_APPLY_RESTART)dwRestart, (BURN_DEPENDENCY_REGISTRATION_ACTION)dwDependencyRegistrationAction, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); |
2194 | ExitOnFailure(hr, "Failed to suspend registration session."); | 2210 | ExitOnFailure(hr, "Failed to suspend registration session."); |
2195 | 2211 | ||
2196 | LExit: | 2212 | LExit: |
@@ -2214,6 +2230,7 @@ LExit: | |||
2214 | } | 2230 | } |
2215 | 2231 | ||
2216 | static HRESULT OnCachePreparePackage( | 2232 | static HRESULT OnCachePreparePackage( |
2233 | __in BURN_CACHE* pCache, | ||
2217 | __in BURN_PACKAGES* pPackages, | 2234 | __in BURN_PACKAGES* pPackages, |
2218 | __in BYTE* pbData, | 2235 | __in BYTE* pbData, |
2219 | __in SIZE_T cbData | 2236 | __in SIZE_T cbData |
@@ -2239,7 +2256,7 @@ static HRESULT OnCachePreparePackage( | |||
2239 | ExitOnRootFailure(hr, "Invalid data passed to cache prepare package."); | 2256 | ExitOnRootFailure(hr, "Invalid data passed to cache prepare package."); |
2240 | } | 2257 | } |
2241 | 2258 | ||
2242 | hr = CachePreparePackage(pPackage); | 2259 | hr = CachePreparePackage(pCache, pPackage); |
2243 | ExitOnFailure(hr, "Failed to prepare cache package."); | 2260 | ExitOnFailure(hr, "Failed to prepare cache package."); |
2244 | 2261 | ||
2245 | LExit: | 2262 | LExit: |
@@ -2250,6 +2267,7 @@ LExit: | |||
2250 | 2267 | ||
2251 | static HRESULT OnCacheCompletePayload( | 2268 | static HRESULT OnCacheCompletePayload( |
2252 | __in HANDLE hPipe, | 2269 | __in HANDLE hPipe, |
2270 | __in BURN_CACHE* pCache, | ||
2253 | __in BURN_PACKAGES* pPackages, | 2271 | __in BURN_PACKAGES* pPackages, |
2254 | __in BURN_PAYLOADS* pPayloads, | 2272 | __in BURN_PAYLOADS* pPayloads, |
2255 | __in BYTE* pbData, | 2273 | __in BYTE* pbData, |
@@ -2291,7 +2309,7 @@ static HRESULT OnCacheCompletePayload( | |||
2291 | 2309 | ||
2292 | if (pPackage && pPayload) // complete payload. | 2310 | if (pPackage && pPayload) // complete payload. |
2293 | { | 2311 | { |
2294 | hr = CacheCompletePayload(pPackage->fPerMachine, pPayload, pPackage->sczCacheId, sczUnverifiedPath, fMove, BurnCacheMessageHandler, ElevatedProgressRoutine, hPipe); | 2312 | hr = CacheCompletePayload(pCache, pPackage->fPerMachine, pPayload, pPackage->sczCacheId, sczUnverifiedPath, fMove, BurnCacheMessageHandler, ElevatedProgressRoutine, hPipe); |
2295 | ExitOnFailure(hr, "Failed to cache payload: %ls", pPayload->sczKey); | 2313 | ExitOnFailure(hr, "Failed to cache payload: %ls", pPayload->sczKey); |
2296 | } | 2314 | } |
2297 | else | 2315 | else |
@@ -2364,10 +2382,10 @@ LExit: | |||
2364 | } | 2382 | } |
2365 | 2383 | ||
2366 | static void OnCacheCleanup( | 2384 | static void OnCacheCleanup( |
2367 | __in_z LPCWSTR wzBundleId | 2385 | __in BURN_CACHE* pCache |
2368 | ) | 2386 | ) |
2369 | { | 2387 | { |
2370 | CacheCleanup(TRUE, wzBundleId); | 2388 | CacheCleanup(TRUE, pCache); |
2371 | } | 2389 | } |
2372 | 2390 | ||
2373 | static HRESULT OnProcessDependentRegistration( | 2391 | static HRESULT OnProcessDependentRegistration( |
@@ -2405,6 +2423,7 @@ LExit: | |||
2405 | 2423 | ||
2406 | static HRESULT OnExecuteExePackage( | 2424 | static HRESULT OnExecuteExePackage( |
2407 | __in HANDLE hPipe, | 2425 | __in HANDLE hPipe, |
2426 | __in BURN_CACHE* pCache, | ||
2408 | __in BURN_PACKAGES* pPackages, | 2427 | __in BURN_PACKAGES* pPackages, |
2409 | __in BURN_RELATED_BUNDLES* pRelatedBundles, | 2428 | __in BURN_RELATED_BUNDLES* pRelatedBundles, |
2410 | __in BURN_VARIABLES* pVariables, | 2429 | __in BURN_VARIABLES* pVariables, |
@@ -2464,7 +2483,7 @@ static HRESULT OnExecuteExePackage( | |||
2464 | } | 2483 | } |
2465 | 2484 | ||
2466 | // Execute EXE package. | 2485 | // Execute EXE package. |
2467 | hr = ExeEngineExecutePackage(&executeAction, pVariables, static_cast<BOOL>(dwRollback), GenericExecuteMessageHandler, hPipe, &exeRestart); | 2486 | hr = ExeEngineExecutePackage(&executeAction, pCache, pVariables, static_cast<BOOL>(dwRollback), GenericExecuteMessageHandler, hPipe, &exeRestart); |
2468 | ExitOnFailure(hr, "Failed to execute EXE package."); | 2487 | ExitOnFailure(hr, "Failed to execute EXE package."); |
2469 | 2488 | ||
2470 | LExit: | 2489 | LExit: |
@@ -2490,6 +2509,7 @@ LExit: | |||
2490 | 2509 | ||
2491 | static HRESULT OnExecuteMsiPackage( | 2510 | static HRESULT OnExecuteMsiPackage( |
2492 | __in HANDLE hPipe, | 2511 | __in HANDLE hPipe, |
2512 | __in BURN_CACHE* pCache, | ||
2493 | __in BURN_PACKAGES* pPackages, | 2513 | __in BURN_PACKAGES* pPackages, |
2494 | __in BURN_VARIABLES* pVariables, | 2514 | __in BURN_VARIABLES* pVariables, |
2495 | __in BYTE* pbData, | 2515 | __in BYTE* pbData, |
@@ -2563,7 +2583,7 @@ static HRESULT OnExecuteMsiPackage( | |||
2563 | ExitOnFailure(hr, "Failed to read variables."); | 2583 | ExitOnFailure(hr, "Failed to read variables."); |
2564 | 2584 | ||
2565 | // Execute MSI package. | 2585 | // Execute MSI package. |
2566 | hr = MsiEngineExecutePackage(hwndParent, &executeAction, pVariables, fRollback, MsiExecuteMessageHandler, hPipe, &msiRestart); | 2586 | hr = MsiEngineExecutePackage(hwndParent, &executeAction, pCache, pVariables, fRollback, MsiExecuteMessageHandler, hPipe, &msiRestart); |
2567 | ExitOnFailure(hr, "Failed to execute MSI package."); | 2587 | ExitOnFailure(hr, "Failed to execute MSI package."); |
2568 | 2588 | ||
2569 | LExit: | 2589 | LExit: |
@@ -2587,6 +2607,7 @@ LExit: | |||
2587 | 2607 | ||
2588 | static HRESULT OnExecuteMspPackage( | 2608 | static HRESULT OnExecuteMspPackage( |
2589 | __in HANDLE hPipe, | 2609 | __in HANDLE hPipe, |
2610 | __in BURN_CACHE* pCache, | ||
2590 | __in BURN_PACKAGES* pPackages, | 2611 | __in BURN_PACKAGES* pPackages, |
2591 | __in BURN_VARIABLES* pVariables, | 2612 | __in BURN_VARIABLES* pVariables, |
2592 | __in BYTE* pbData, | 2613 | __in BYTE* pbData, |
@@ -2658,7 +2679,7 @@ static HRESULT OnExecuteMspPackage( | |||
2658 | ExitOnFailure(hr, "Failed to read rollback flag."); | 2679 | ExitOnFailure(hr, "Failed to read rollback flag."); |
2659 | 2680 | ||
2660 | // Execute MSP package. | 2681 | // Execute MSP package. |
2661 | hr = MspEngineExecutePackage(hwndParent, &executeAction, pVariables, fRollback, MsiExecuteMessageHandler, hPipe, &restart); | 2682 | hr = MspEngineExecutePackage(hwndParent, &executeAction, pCache, pVariables, fRollback, MsiExecuteMessageHandler, hPipe, &restart); |
2662 | ExitOnFailure(hr, "Failed to execute MSP package."); | 2683 | ExitOnFailure(hr, "Failed to execute MSP package."); |
2663 | 2684 | ||
2664 | LExit: | 2685 | LExit: |
@@ -2682,6 +2703,7 @@ LExit: | |||
2682 | 2703 | ||
2683 | static HRESULT OnExecuteMsuPackage( | 2704 | static HRESULT OnExecuteMsuPackage( |
2684 | __in HANDLE hPipe, | 2705 | __in HANDLE hPipe, |
2706 | __in BURN_CACHE* pCache, | ||
2685 | __in BURN_PACKAGES* pPackages, | 2707 | __in BURN_PACKAGES* pPackages, |
2686 | __in BURN_VARIABLES* pVariables, | 2708 | __in BURN_VARIABLES* pVariables, |
2687 | __in BYTE* pbData, | 2709 | __in BYTE* pbData, |
@@ -2718,7 +2740,7 @@ static HRESULT OnExecuteMsuPackage( | |||
2718 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 2740 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
2719 | 2741 | ||
2720 | // execute MSU package | 2742 | // execute MSU package |
2721 | hr = MsuEngineExecutePackage(&executeAction, pVariables, static_cast<BOOL>(dwRollback), static_cast<BOOL>(dwStopWusaService), GenericExecuteMessageHandler, hPipe, &restart); | 2743 | hr = MsuEngineExecutePackage(&executeAction, pCache, pVariables, static_cast<BOOL>(dwRollback), static_cast<BOOL>(dwStopWusaService), GenericExecuteMessageHandler, hPipe, &restart); |
2722 | ExitOnFailure(hr, "Failed to execute MSU package."); | 2744 | ExitOnFailure(hr, "Failed to execute MSU package."); |
2723 | 2745 | ||
2724 | LExit: | 2746 | LExit: |
@@ -3051,6 +3073,7 @@ LExit: | |||
3051 | } | 3073 | } |
3052 | 3074 | ||
3053 | static HRESULT OnCleanPackage( | 3075 | static HRESULT OnCleanPackage( |
3076 | __in BURN_CACHE* pCache, | ||
3054 | __in BURN_PACKAGES* pPackages, | 3077 | __in BURN_PACKAGES* pPackages, |
3055 | __in BYTE* pbData, | 3078 | __in BYTE* pbData, |
3056 | __in SIZE_T cbData | 3079 | __in SIZE_T cbData |
@@ -3069,7 +3092,7 @@ static HRESULT OnCleanPackage( | |||
3069 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3092 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
3070 | 3093 | ||
3071 | // Remove the package from the cache. | 3094 | // Remove the package from the cache. |
3072 | hr = CacheRemovePackage(TRUE, pPackage->sczId, pPackage->sczCacheId); | 3095 | hr = CacheRemovePackage(pCache, TRUE, pPackage->sczId, pPackage->sczCacheId); |
3073 | ExitOnFailure(hr, "Failed to remove from cache package: %ls", pPackage->sczId); | 3096 | ExitOnFailure(hr, "Failed to remove from cache package: %ls", pPackage->sczId); |
3074 | 3097 | ||
3075 | LExit: | 3098 | LExit: |
@@ -3080,6 +3103,7 @@ LExit: | |||
3080 | static HRESULT OnLaunchApprovedExe( | 3103 | static HRESULT OnLaunchApprovedExe( |
3081 | __in HANDLE hPipe, | 3104 | __in HANDLE hPipe, |
3082 | __in BURN_APPROVED_EXES* pApprovedExes, | 3105 | __in BURN_APPROVED_EXES* pApprovedExes, |
3106 | __in BURN_CACHE* pCache, | ||
3083 | __in BURN_VARIABLES* pVariables, | 3107 | __in BURN_VARIABLES* pVariables, |
3084 | __in BYTE* pbData, | 3108 | __in BYTE* pbData, |
3085 | __in SIZE_T cbData | 3109 | __in SIZE_T cbData |
@@ -3124,7 +3148,7 @@ static HRESULT OnLaunchApprovedExe( | |||
3124 | hr = RegReadString(hKey, pApprovedExe->sczValueName, &pLaunchApprovedExe->sczExecutablePath); | 3148 | hr = RegReadString(hKey, pApprovedExe->sczValueName, &pLaunchApprovedExe->sczExecutablePath); |
3125 | ExitOnFailure(hr, "Failed to read the value for the approved exe path."); | 3149 | ExitOnFailure(hr, "Failed to read the value for the approved exe path."); |
3126 | 3150 | ||
3127 | hr = ApprovedExesVerifySecureLocation(pVariables, pLaunchApprovedExe); | 3151 | hr = ApprovedExesVerifySecureLocation(pCache, pVariables, pLaunchApprovedExe); |
3128 | ExitOnFailure(hr, "Failed to verify the executable path is in a secure location: %ls", pLaunchApprovedExe->sczExecutablePath); | 3152 | ExitOnFailure(hr, "Failed to verify the executable path is in a secure location: %ls", pLaunchApprovedExe->sczExecutablePath); |
3129 | if (S_FALSE == hr) | 3153 | if (S_FALSE == hr) |
3130 | { | 3154 | { |