aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/userexperience.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/userexperience.h')
-rw-r--r--src/burn/engine/userexperience.h545
1 files changed, 545 insertions, 0 deletions
diff --git a/src/burn/engine/userexperience.h b/src/burn/engine/userexperience.h
new file mode 100644
index 00000000..f2453dca
--- /dev/null
+++ b/src/burn/engine/userexperience.h
@@ -0,0 +1,545 @@
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 BAAPI HRESULT __stdcall
5
6#if defined(__cplusplus)
7extern "C" {
8#endif
9
10
11// constants
12
13const DWORD MB_RETRYTRYAGAIN = 0xF;
14
15
16// structs
17
18typedef struct _BOOTSTRAPPER_ENGINE_CONTEXT BOOTSTRAPPER_ENGINE_CONTEXT;
19
20typedef struct _BURN_USER_EXPERIENCE
21{
22 BOOL fSplashScreen;
23 BURN_PAYLOADS payloads;
24
25 HMODULE hUXModule;
26 PFN_BOOTSTRAPPER_APPLICATION_PROC pfnBAProc;
27 LPVOID pvBAProcContext;
28 BOOL fDisableUnloading;
29 LPWSTR sczTempDirectory;
30
31 CRITICAL_SECTION csEngineActive; // Changing the engine active state in the user experience must be
32 // syncronized through this critical section.
33 // Note: The engine must never do a UX callback while in this critical section.
34
35 BOOL fEngineActive; // Indicates that the engine is currently active with one of the execution
36 // steps (detect, plan, apply), and cannot accept requests from the UX.
37 // This flag should be cleared by the engine prior to UX callbacks that
38 // allows altering of the engine state.
39
40 HRESULT hrApplyError; // Tracks is an error occurs during apply that requires the cache or
41 // execute threads to bail.
42
43 HWND hwndApply; // The window handle provided at the beginning of Apply(). Only valid
44 // during apply.
45
46 HWND hwndDetect; // The window handle provided at the beginning of Detect(). Only valid
47 // during Detect.
48
49 DWORD dwExitCode; // Exit code returned by the user experience for the engine overall.
50} BURN_USER_EXPERIENCE;
51
52// functions
53
54HRESULT UserExperienceParseFromXml(
55 __in BURN_USER_EXPERIENCE* pUserExperience,
56 __in IXMLDOMNode* pixnBundle
57 );
58void UserExperienceUninitialize(
59 __in BURN_USER_EXPERIENCE* pUserExperience
60 );
61HRESULT UserExperienceLoad(
62 __in BURN_USER_EXPERIENCE* pUserExperience,
63 __in BOOTSTRAPPER_ENGINE_CONTEXT* pEngineContext,
64 __in BOOTSTRAPPER_COMMAND* pCommand
65 );
66HRESULT UserExperienceUnload(
67 __in BURN_USER_EXPERIENCE* pUserExperience
68 );
69HRESULT UserExperienceEnsureWorkingFolder(
70 __in LPCWSTR wzBundleId,
71 __deref_out_z LPWSTR* psczUserExperienceWorkingFolder
72 );
73HRESULT UserExperienceRemove(
74 __in BURN_USER_EXPERIENCE* pUserExperience
75 );
76int UserExperienceSendError(
77 __in BURN_USER_EXPERIENCE* pUserExperience,
78 __in BOOTSTRAPPER_ERROR_TYPE errorType,
79 __in_z_opt LPCWSTR wzPackageId,
80 __in HRESULT hrCode,
81 __in_z_opt LPCWSTR wzError,
82 __in DWORD uiFlags,
83 __in int nRecommendation
84 );
85void UserExperienceActivateEngine(
86 __in BURN_USER_EXPERIENCE* pUserExperience
87 );
88void UserExperienceDeactivateEngine(
89 __in BURN_USER_EXPERIENCE* pUserExperience
90 );
91/********************************************************************
92 UserExperienceEnsureEngineInactive - Verifies the engine is inactive.
93 The caller MUST enter the csActive critical section before calling.
94
95*********************************************************************/
96HRESULT UserExperienceEnsureEngineInactive(
97 __in BURN_USER_EXPERIENCE* pUserExperience
98 );
99void UserExperienceExecuteReset(
100 __in BURN_USER_EXPERIENCE* pUserExperience
101 );
102void UserExperienceExecutePhaseComplete(
103 __in BURN_USER_EXPERIENCE* pUserExperience,
104 __in HRESULT hrResult
105 );
106BAAPI UserExperienceOnApplyBegin(
107 __in BURN_USER_EXPERIENCE* pUserExperience,
108 __in DWORD dwPhaseCount
109 );
110BAAPI UserExperienceOnApplyComplete(
111 __in BURN_USER_EXPERIENCE* pUserExperience,
112 __in HRESULT hrStatus,
113 __in BOOTSTRAPPER_APPLY_RESTART restart,
114 __inout BOOTSTRAPPER_APPLYCOMPLETE_ACTION* pAction
115 );
116BAAPI UserExperienceOnBeginMsiTransactionBegin(
117 __in BURN_USER_EXPERIENCE* pUserExperience,
118 __in LPCWSTR wzTransactionId
119 );
120BAAPI UserExperienceOnBeginMsiTransactionComplete(
121 __in BURN_USER_EXPERIENCE* pUserExperience,
122 __in LPCWSTR wzTransactionId,
123 __in HRESULT hrStatus
124 );
125BAAPI UserExperienceOnCacheAcquireBegin(
126 __in BURN_USER_EXPERIENCE* pUserExperience,
127 __in_z_opt LPCWSTR wzPackageOrContainerId,
128 __in_z_opt LPCWSTR wzPayloadId,
129 __in_z LPWSTR* pwzSource,
130 __in_z LPWSTR* pwzDownloadUrl,
131 __in_z_opt LPCWSTR wzPayloadContainerId,
132 __out BOOTSTRAPPER_CACHE_OPERATION* pCacheOperation
133 );
134BAAPI UserExperienceOnCacheAcquireComplete(
135 __in BURN_USER_EXPERIENCE* pUserExperience,
136 __in_z_opt LPCWSTR wzPackageOrContainerId,
137 __in_z_opt LPCWSTR wzPayloadId,
138 __in HRESULT hrStatus,
139 __inout BOOL* pfRetry
140 );
141BAAPI UserExperienceOnCacheAcquireProgress(
142 __in BURN_USER_EXPERIENCE* pUserExperience,
143 __in_z_opt LPCWSTR wzPackageOrContainerId,
144 __in_z_opt LPCWSTR wzPayloadId,
145 __in DWORD64 dw64Progress,
146 __in DWORD64 dw64Total,
147 __in DWORD dwOverallPercentage
148 );
149BAAPI UserExperienceOnCacheAcquireResolving(
150 __in BURN_USER_EXPERIENCE* pUserExperience,
151 __in_z_opt LPCWSTR wzPackageOrContainerId,
152 __in_z_opt LPCWSTR wzPayloadId,
153 __in_z LPWSTR* rgSearchPaths,
154 __in DWORD cSearchPaths,
155 __in BOOL fFoundLocal,
156 __in DWORD* pdwChosenSearchPath,
157 __in_z_opt LPWSTR* pwzDownloadUrl,
158 __in_z_opt LPCWSTR wzPayloadContainerId,
159 __inout BOOTSTRAPPER_CACHE_RESOLVE_OPERATION* pCacheOperation
160 );
161BAAPI UserExperienceOnCacheBegin(
162 __in BURN_USER_EXPERIENCE* pUserExperience
163 );
164BAAPI UserExperienceOnCacheComplete(
165 __in BURN_USER_EXPERIENCE* pUserExperience,
166 __in HRESULT hrStatus
167 );
168BAAPI UserExperienceOnCacheContainerOrPayloadVerifyBegin(
169 __in BURN_USER_EXPERIENCE* pUserExperience,
170 __in_z_opt LPCWSTR wzPackageOrContainerId,
171 __in_z_opt LPCWSTR wzPayloadId
172 );
173BAAPI UserExperienceOnCacheContainerOrPayloadVerifyComplete(
174 __in BURN_USER_EXPERIENCE* pUserExperience,
175 __in_z_opt LPCWSTR wzPackageOrContainerId,
176 __in_z_opt LPCWSTR wzPayloadId,
177 __in HRESULT hrStatus
178 );
179BAAPI UserExperienceOnCacheContainerOrPayloadVerifyProgress(
180 __in BURN_USER_EXPERIENCE* pUserExperience,
181 __in_z_opt LPCWSTR wzPackageOrContainerId,
182 __in_z_opt LPCWSTR wzPayloadId,
183 __in DWORD64 dw64Progress,
184 __in DWORD64 dw64Total,
185 __in DWORD dwOverallPercentage
186 );
187BAAPI UserExperienceOnCachePackageBegin(
188 __in BURN_USER_EXPERIENCE* pUserExperience,
189 __in_z LPCWSTR wzPackageId,
190 __in DWORD cCachePayloads,
191 __in DWORD64 dw64PackageCacheSize
192 );
193BAAPI UserExperienceOnCachePackageComplete(
194 __in BURN_USER_EXPERIENCE* pUserExperience,
195 __in_z LPCWSTR wzPackageId,
196 __in HRESULT hrStatus,
197 __inout BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION* pAction
198 );
199BAAPI UserExperienceOnCachePayloadExtractBegin(
200 __in BURN_USER_EXPERIENCE* pUserExperience,
201 __in_z_opt LPCWSTR wzContainerId,
202 __in_z_opt LPCWSTR wzPayloadId
203 );
204BAAPI UserExperienceOnCachePayloadExtractComplete(
205 __in BURN_USER_EXPERIENCE* pUserExperience,
206 __in_z_opt LPCWSTR wzContainerId,
207 __in_z_opt LPCWSTR wzPayloadId,
208 __in HRESULT hrStatus
209 );
210BAAPI UserExperienceOnCachePayloadExtractProgress(
211 __in BURN_USER_EXPERIENCE* pUserExperience,
212 __in_z_opt LPCWSTR wzContainerId,
213 __in_z_opt LPCWSTR wzPayloadId,
214 __in DWORD64 dw64Progress,
215 __in DWORD64 dw64Total,
216 __in DWORD dwOverallPercentage
217 );
218BAAPI UserExperienceOnCacheVerifyBegin(
219 __in BURN_USER_EXPERIENCE* pUserExperience,
220 __in_z_opt LPCWSTR wzPackageOrContainerId,
221 __in_z_opt LPCWSTR wzPayloadId
222 );
223BAAPI UserExperienceOnCacheVerifyComplete(
224 __in BURN_USER_EXPERIENCE* pUserExperience,
225 __in_z_opt LPCWSTR wzPackageOrContainerId,
226 __in_z_opt LPCWSTR wzPayloadId,
227 __in HRESULT hrStatus,
228 __inout BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION* pAction
229 );
230BAAPI UserExperienceOnCacheVerifyProgress(
231 __in BURN_USER_EXPERIENCE* pUserExperience,
232 __in_z_opt LPCWSTR wzPackageOrContainerId,
233 __in_z_opt LPCWSTR wzPayloadId,
234 __in DWORD64 dw64Progress,
235 __in DWORD64 dw64Total,
236 __in DWORD dwOverallPercentage,
237 __in BOOTSTRAPPER_CACHE_VERIFY_STEP verifyStep
238 );
239BAAPI UserExperienceOnCommitMsiTransactionBegin(
240 __in BURN_USER_EXPERIENCE* pUserExperience,
241 __in LPCWSTR wzTransactionId
242 );
243BAAPI UserExperienceOnCommitMsiTransactionComplete(
244 __in BURN_USER_EXPERIENCE* pUserExperience,
245 __in LPCWSTR wzTransactionId,
246 __in HRESULT hrStatus
247 );
248BAAPI UserExperienceOnDetectBegin(
249 __in BURN_USER_EXPERIENCE* pUserExperience,
250 __in BOOL fCached,
251 __in BOOL fInstalled,
252 __in DWORD cPackages
253 );
254BAAPI UserExperienceOnDetectComplete(
255 __in BURN_USER_EXPERIENCE* pUserExperience,
256 __in HRESULT hrStatus,
257 __in BOOL fEligibleForCleanup
258 );
259BAAPI UserExperienceOnDetectForwardCompatibleBundle(
260 __in BURN_USER_EXPERIENCE* pUserExperience,
261 __in_z LPCWSTR wzBundleId,
262 __in BOOTSTRAPPER_RELATION_TYPE relationType,
263 __in_z LPCWSTR wzBundleTag,
264 __in BOOL fPerMachine,
265 __in VERUTIL_VERSION* pVersion,
266 __in BOOL fMissingFromCache
267 );
268BAAPI UserExperienceOnDetectMsiFeature(
269 __in BURN_USER_EXPERIENCE* pUserExperience,
270 __in_z LPCWSTR wzPackageId,
271 __in_z LPCWSTR wzFeatureId,
272 __in BOOTSTRAPPER_FEATURE_STATE state
273 );
274BAAPI UserExperienceOnDetectPackageBegin(
275 __in BURN_USER_EXPERIENCE* pUserExperience,
276 __in_z LPCWSTR wzPackageId
277 );
278BAAPI UserExperienceOnDetectPackageComplete(
279 __in BURN_USER_EXPERIENCE* pUserExperience,
280 __in_z LPCWSTR wzPackageId,
281 __in HRESULT hrStatus,
282 __in BOOTSTRAPPER_PACKAGE_STATE state,
283 __in BOOL fCached
284 );
285BAAPI UserExperienceOnDetectRelatedBundle(
286 __in BURN_USER_EXPERIENCE* pUserExperience,
287 __in_z LPCWSTR wzBundleId,
288 __in BOOTSTRAPPER_RELATION_TYPE relationType,
289 __in_z LPCWSTR wzBundleTag,
290 __in BOOL fPerMachine,
291 __in VERUTIL_VERSION* pVersion,
292 __in BOOTSTRAPPER_RELATED_OPERATION operation,
293 __in BOOL fMissingFromCache
294 );
295BAAPI UserExperienceOnDetectRelatedMsiPackage(
296 __in BURN_USER_EXPERIENCE* pUserExperience,
297 __in_z LPCWSTR wzPackageId,
298 __in_z LPCWSTR wzUpgradeCode,
299 __in_z LPCWSTR wzProductCode,
300 __in BOOL fPerMachine,
301 __in VERUTIL_VERSION* pVersion,
302 __in BOOTSTRAPPER_RELATED_OPERATION operation
303 );
304BAAPI UserExperienceOnDetectPatchTarget(
305 __in BURN_USER_EXPERIENCE* pUserExperience,
306 __in_z LPCWSTR wzPackageId,
307 __in_z LPCWSTR wzProductCode,
308 __in BOOTSTRAPPER_PACKAGE_STATE patchState
309 );
310BAAPI UserExperienceOnDetectUpdate(
311 __in BURN_USER_EXPERIENCE* pUserExperience,
312 __in_z_opt LPCWSTR wzUpdateLocation,
313 __in DWORD64 dw64Size,
314 __in VERUTIL_VERSION* pVersion,
315 __in_z_opt LPCWSTR wzTitle,
316 __in_z_opt LPCWSTR wzSummary,
317 __in_z_opt LPCWSTR wzContentType,
318 __in_z_opt LPCWSTR wzContent,
319 __inout BOOL* pfStopProcessingUpdates
320 );
321BAAPI UserExperienceOnDetectUpdateBegin(
322 __in BURN_USER_EXPERIENCE* pUserExperience,
323 __in_z LPCWSTR wzUpdateLocation,
324 __inout BOOL* pfSkip
325 );
326BAAPI UserExperienceOnDetectUpdateComplete(
327 __in BURN_USER_EXPERIENCE* pUserExperience,
328 __in HRESULT hrStatus,
329 __inout BOOL* pfIgnoreError
330 );
331BAAPI UserExperienceOnElevateBegin(
332 __in BURN_USER_EXPERIENCE* pUserExperience
333 );
334BAAPI UserExperienceOnElevateComplete(
335 __in BURN_USER_EXPERIENCE* pUserExperience,
336 __in HRESULT hrStatus
337 );
338BAAPI UserExperienceOnError(
339 __in BURN_USER_EXPERIENCE* pUserExperience,
340 __in BOOTSTRAPPER_ERROR_TYPE errorType,
341 __in_z_opt LPCWSTR wzPackageId,
342 __in DWORD dwCode,
343 __in_z_opt LPCWSTR wzError,
344 __in DWORD dwUIHint,
345 __in DWORD cData,
346 __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
347 __inout int* pnResult
348 );
349BAAPI UserExperienceOnExecuteBegin(
350 __in BURN_USER_EXPERIENCE* pUserExperience,
351 __in DWORD cExecutingPackages
352 );
353BAAPI UserExperienceOnExecuteComplete(
354 __in BURN_USER_EXPERIENCE* pUserExperience,
355 __in HRESULT hrStatus
356 );
357BAAPI UserExperienceOnExecuteFilesInUse(
358 __in BURN_USER_EXPERIENCE* pUserExperience,
359 __in_z LPCWSTR wzPackageId,
360 __in DWORD cFiles,
361 __in_ecount_z_opt(cFiles) LPCWSTR* rgwzFiles,
362 __inout int* pnResult
363 );
364BAAPI UserExperienceOnExecuteMsiMessage(
365 __in BURN_USER_EXPERIENCE* pUserExperience,
366 __in_z LPCWSTR wzPackageId,
367 __in INSTALLMESSAGE messageType,
368 __in DWORD dwUIHint,
369 __in_z LPCWSTR wzMessage,
370 __in DWORD cData,
371 __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
372 __inout int* pnResult
373 );
374BAAPI UserExperienceOnExecutePackageBegin(
375 __in BURN_USER_EXPERIENCE* pUserExperience,
376 __in_z LPCWSTR wzPackageId,
377 __in BOOL fExecute,
378 __in BOOTSTRAPPER_ACTION_STATE action,
379 __in INSTALLUILEVEL uiLevel,
380 __in BOOL fDisableExternalUiHandler
381 );
382BAAPI UserExperienceOnExecutePackageComplete(
383 __in BURN_USER_EXPERIENCE* pUserExperience,
384 __in_z LPCWSTR wzPackageId,
385 __in HRESULT hrStatus,
386 __in BOOTSTRAPPER_APPLY_RESTART restart,
387 __inout BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION* pAction
388 );
389BAAPI UserExperienceOnExecutePatchTarget(
390 __in BURN_USER_EXPERIENCE* pUserExperience,
391 __in_z LPCWSTR wzPackageId,
392 __in_z LPCWSTR wzTargetProductCode
393 );
394BAAPI UserExperienceOnExecuteProgress(
395 __in BURN_USER_EXPERIENCE* pUserExperience,
396 __in_z LPCWSTR wzPackageId,
397 __in DWORD dwProgressPercentage,
398 __in DWORD dwOverallPercentage,
399 __out int* pnResult
400 );
401BAAPI UserExperienceOnLaunchApprovedExeBegin(
402 __in BURN_USER_EXPERIENCE* pUserExperience
403 );
404BAAPI UserExperienceOnLaunchApprovedExeComplete(
405 __in BURN_USER_EXPERIENCE* pUserExperience,
406 __in HRESULT hrStatus,
407 __in DWORD dwProcessId
408 );
409BAAPI UserExperienceOnPauseAUBegin(
410 __in BURN_USER_EXPERIENCE* pUserExperience
411 );
412BAAPI UserExperienceOnPauseAUComplete(
413 __in BURN_USER_EXPERIENCE* pUserExperience,
414 __in HRESULT hrStatus
415 );
416BAAPI UserExperienceOnPlanBegin(
417 __in BURN_USER_EXPERIENCE* pUserExperience,
418 __in DWORD cPackages
419 );
420BAAPI UserExperienceOnPlanComplete(
421 __in BURN_USER_EXPERIENCE* pUserExperience,
422 __in HRESULT hrStatus
423 );
424BAAPI UserExperienceOnPlanForwardCompatibleBundle(
425 __in BURN_USER_EXPERIENCE* pUserExperience,
426 __in_z LPCWSTR wzBundleId,
427 __in BOOTSTRAPPER_RELATION_TYPE relationType,
428 __in_z LPCWSTR wzBundleTag,
429 __in BOOL fPerMachine,
430 __in VERUTIL_VERSION* pVersion,
431 __inout BOOL* pfIgnoreBundle
432 );
433BAAPI UserExperienceOnPlanMsiFeature(
434 __in BURN_USER_EXPERIENCE* pUserExperience,
435 __in_z LPCWSTR wzPackageId,
436 __in_z LPCWSTR wzFeatureId,
437 __inout BOOTSTRAPPER_FEATURE_STATE* pRequestedState
438 );
439BAAPI UserExperienceOnPlanMsiPackage(
440 __in BURN_USER_EXPERIENCE* pUserExperience,
441 __in_z LPCWSTR wzPackageId,
442 __in BOOL fExecute,
443 __in BOOTSTRAPPER_ACTION_STATE action,
444 __inout BURN_MSI_PROPERTY* pActionMsiProperty,
445 __inout INSTALLUILEVEL* pUiLevel,
446 __inout BOOL* pfDisableExternalUiHandler
447 );
448BAAPI UserExperienceOnPlannedPackage(
449 __in BURN_USER_EXPERIENCE* pUserExperience,
450 __in_z LPCWSTR wzPackageId,
451 __in BOOTSTRAPPER_ACTION_STATE execute,
452 __in BOOTSTRAPPER_ACTION_STATE rollback,
453 __in BOOL fPlannedCache,
454 __in BOOL fPlannedUncache
455 );
456BAAPI UserExperienceOnPlanPackageBegin(
457 __in BURN_USER_EXPERIENCE* pUserExperience,
458 __in_z LPCWSTR wzPackageId,
459 __in BOOTSTRAPPER_PACKAGE_STATE state,
460 __in BOOL fCached,
461 __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition,
462 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
463 __inout BOOTSTRAPPER_CACHE_TYPE* pRequestedCacheType
464 );
465BAAPI UserExperienceOnPlanPackageComplete(
466 __in BURN_USER_EXPERIENCE* pUserExperience,
467 __in_z LPCWSTR wzPackageId,
468 __in HRESULT hrStatus,
469 __in BOOTSTRAPPER_REQUEST_STATE requested
470 );
471BAAPI UserExperienceOnPlanRelatedBundle(
472 __in BURN_USER_EXPERIENCE* pUserExperience,
473 __in_z LPCWSTR wzBundleId,
474 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
475 );
476BAAPI UserExperienceOnPlanPatchTarget(
477 __in BURN_USER_EXPERIENCE* pUserExperience,
478 __in_z LPCWSTR wzPackageId,
479 __in_z LPCWSTR wzProductCode,
480 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
481 );
482BAAPI UserExperienceOnProgress(
483 __in BURN_USER_EXPERIENCE* pUserExperience,
484 __in BOOL fRollback,
485 __in DWORD dwProgressPercentage,
486 __in DWORD dwOverallPercentage
487 );
488BAAPI UserExperienceOnRegisterBegin(
489 __in BURN_USER_EXPERIENCE* pUserExperience
490 );
491BAAPI UserExperienceOnRegisterComplete(
492 __in BURN_USER_EXPERIENCE* pUserExperience,
493 __in HRESULT hrStatus
494 );
495BAAPI UserExperienceOnRollbackMsiTransactionBegin(
496 __in BURN_USER_EXPERIENCE* pUserExperience,
497 __in LPCWSTR wzTransactionId
498 );
499BAAPI UserExperienceOnRollbackMsiTransactionComplete(
500 __in BURN_USER_EXPERIENCE* pUserExperience,
501 __in LPCWSTR wzTransactionId,
502 __in HRESULT hrStatus
503 );
504BAAPI UserExperienceOnShutdown(
505 __in BURN_USER_EXPERIENCE* pUserExperience,
506 __inout BOOTSTRAPPER_SHUTDOWN_ACTION* pAction
507 );
508BAAPI UserExperienceOnStartup(
509 __in BURN_USER_EXPERIENCE* pUserExperience
510 );
511BAAPI UserExperienceOnSystemRestorePointBegin(
512 __in BURN_USER_EXPERIENCE* pUserExperience
513 );
514BAAPI UserExperienceOnSystemRestorePointComplete(
515 __in BURN_USER_EXPERIENCE* pUserExperience,
516 __in HRESULT hrStatus
517 );
518BAAPI UserExperienceOnSystemShutdown(
519 __in BURN_USER_EXPERIENCE* pUserExperience,
520 __in DWORD dwEndSession,
521 __inout BOOL* pfCancel
522 );
523BAAPI UserExperienceOnUnregisterBegin(
524 __in BURN_USER_EXPERIENCE* pUserExperience,
525 __inout BOOL* pfKeepRegistration
526 );
527BAAPI UserExperienceOnUnregisterComplete(
528 __in BURN_USER_EXPERIENCE* pUserExperience,
529 __in HRESULT hrStatus
530 );
531int UserExperienceCheckExecuteResult(
532 __in BURN_USER_EXPERIENCE* pUserExperience,
533 __in BOOL fRollback,
534 __in DWORD dwAllowedResults,
535 __in int nResult
536 );
537HRESULT UserExperienceInterpretExecuteResult(
538 __in BURN_USER_EXPERIENCE* pUserExperience,
539 __in BOOL fRollback,
540 __in DWORD dwAllowedResults,
541 __in int nResult
542 );
543#if defined(__cplusplus)
544}
545#endif