aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/payload.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/payload.h')
-rw-r--r--src/burn/engine/payload.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/burn/engine/payload.h b/src/burn/engine/payload.h
new file mode 100644
index 00000000..f28b437f
--- /dev/null
+++ b/src/burn/engine/payload.h
@@ -0,0 +1,107 @@
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
12enum BURN_PAYLOAD_PACKAGING
13{
14 BURN_PAYLOAD_PACKAGING_NONE,
15 BURN_PAYLOAD_PACKAGING_EMBEDDED,
16 BURN_PAYLOAD_PACKAGING_EXTERNAL,
17};
18
19enum BURN_PAYLOAD_STATE
20{
21 BURN_PAYLOAD_STATE_NONE,
22 BURN_PAYLOAD_STATE_ACQUIRED,
23 BURN_PAYLOAD_STATE_CACHED,
24};
25
26
27// structs
28
29typedef struct _BURN_PAYLOAD
30{
31 LPWSTR sczKey;
32 BURN_PAYLOAD_PACKAGING packaging;
33 BOOL fLayoutOnly;
34 DWORD64 qwFileSize;
35 LPWSTR sczFilePath; // file path relative to the execute location
36
37 BYTE* pbHash;
38 DWORD cbHash;
39
40 LPWSTR sczSourcePath;
41 BURN_CONTAINER* pContainer;
42 DOWNLOAD_SOURCE downloadSource;
43
44 // mutable members
45 BURN_PAYLOAD_STATE state;
46 LPWSTR sczLocalFilePath; // location of extracted or downloaded copy
47
48 LPWSTR sczUnverifiedPath;
49 DWORD cRemainingInstances;
50} BURN_PAYLOAD;
51
52typedef struct _BURN_PAYLOADS
53{
54 BURN_PAYLOAD* rgPayloads;
55 DWORD cPayloads;
56} BURN_PAYLOADS;
57
58typedef struct _BURN_PAYLOAD_GROUP_ITEM
59{
60 BURN_PAYLOAD* pPayload;
61
62 // mutable members
63 BOOL fCached;
64 DWORD64 qwCommittedCacheProgress;
65} BURN_PAYLOAD_GROUP_ITEM;
66
67typedef struct _BURN_PAYLOAD_GROUP
68{
69 BURN_PAYLOAD_GROUP_ITEM* rgItems;
70 DWORD cItems;
71 DWORD64 qwTotalSize;
72} BURN_PAYLOAD_GROUP;
73
74// functions
75
76HRESULT PayloadsParseFromXml(
77 __in BURN_PAYLOADS* pPayloads,
78 __in_opt BURN_CONTAINERS* pContainers,
79 __in_opt BURN_PAYLOAD_GROUP* pLayoutPayloads,
80 __in IXMLDOMNode* pixnBundle
81 );
82void PayloadUninitialize(
83 __in BURN_PAYLOAD* pPayload
84 );
85void PayloadsUninitialize(
86 __in BURN_PAYLOADS* pPayloads
87 );
88HRESULT PayloadExtractUXContainer(
89 __in BURN_PAYLOADS* pPayloads,
90 __in BURN_CONTAINER_CONTEXT* pContainerContext,
91 __in_z LPCWSTR wzTargetDir
92 );
93HRESULT PayloadFindById(
94 __in BURN_PAYLOADS* pPayloads,
95 __in_z LPCWSTR wzId,
96 __out BURN_PAYLOAD** ppPayload
97 );
98HRESULT PayloadFindEmbeddedBySourcePath(
99 __in BURN_PAYLOADS* pPayloads,
100 __in_z LPCWSTR wzStreamName,
101 __out BURN_PAYLOAD** ppPayload
102 );
103
104
105#if defined(__cplusplus)
106}
107#endif