aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/section.h
blob: 6c62ba44428fc845bf02c017f95cc86100b93294 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#pragma once
// 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.


#if defined(__cplusplus)
extern "C" {
#endif


// structs

typedef struct _BURN_SECTION
{
    HANDLE hEngineFile;
    HANDLE hSourceEngineFile;

    DWORD cbStub;
    DWORD cbEngineSize;     // stub + UX container + original certficiate
    DWORD64 qwBundleSize;   // stub + UX container + original certificate [+ attached containers* + final certificate]

    DWORD dwChecksumOffset;
    DWORD dwCertificateTableOffset;
    DWORD_PTR dwOriginalChecksumAndSignatureOffset;

    DWORD dwOriginalChecksum;
    DWORD dwOriginalSignatureOffset;
    DWORD dwOriginalSignatureSize;

    DWORD dwFormat;
    DWORD cContainers;
    DWORD* rgcbContainers;
} BURN_SECTION;


HRESULT SectionInitialize(
    __in BURN_SECTION* pSection,
    __in HANDLE hEngineFile,
    __in HANDLE hSourceEngineFile
    );
void SectionUninitialize(
    __in BURN_SECTION* pSection
    );
HRESULT SectionGetAttachedContainerInfo(
    __in BURN_SECTION* pSection,
    __in DWORD iContainerIndex,
    __in DWORD dwExpectedType,
    __out DWORD64* pqwOffset,
    __out DWORD64* pqwSize,
    __out BOOL* pfPresent
    );

#if defined(__cplusplus)
}
#endif