aboutsummaryrefslogtreecommitdiff
path: root/src/libs/dutil/WixToolset.DUtil/inc/verutil.h
blob: cab18be7b2673b3ac6e42d2e0761d9665e21a010 (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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#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.


#ifdef __cplusplus
extern "C" {
#endif

#define ReleaseVerutilVersion(p) if (p) { VerFreeVersion(p); p = NULL; }

typedef struct _VERUTIL_VERSION_RELEASE_LABEL
{
    BOOL fNumeric;
    DWORD dwValue;
    SIZE_T cchLabelOffset;
    int cchLabel;
} VERUTIL_VERSION_RELEASE_LABEL;

typedef struct _VERUTIL_VERSION
{
    LPWSTR sczVersion;
    WCHAR chPrefix;
    DWORD dwMajor;
    DWORD dwMinor;
    DWORD dwPatch;
    DWORD dwRevision;
    DWORD cReleaseLabels;
    VERUTIL_VERSION_RELEASE_LABEL* rgReleaseLabels;
    SIZE_T cchMetadataOffset;
    BOOL fInvalid;
    BOOL fHasMajor;
    BOOL fHasMinor;
    BOOL fHasPatch;
    BOOL fHasRevision;
} VERUTIL_VERSION;

/*******************************************************************
 VerCompareParsedVersions - compares the Verutil versions.

*******************************************************************/
HRESULT DAPI VerCompareParsedVersions(
    __in_opt VERUTIL_VERSION* pVersion1,
    __in_opt VERUTIL_VERSION* pVersion2,
    __out int* pnResult
    );

/*******************************************************************
 VerCompareStringVersions - parses the strings with VerParseVersion and then
                            compares the Verutil versions with VerCompareParsedVersions.

*******************************************************************/
HRESULT DAPI VerCompareStringVersions(
    __in_z LPCWSTR wzVersion1,
    __in_z LPCWSTR wzVersion2,
    __in BOOL fStrict,
    __out int* pnResult
    );

/********************************************************************
 VerCopyVersion - copies the given Verutil version.

*******************************************************************/
HRESULT DAPI VerCopyVersion(
    __in VERUTIL_VERSION* pSource,
    __out VERUTIL_VERSION** ppVersion
    );

/********************************************************************
 VerFreeVersion - frees any memory associated with a Verutil version.

*******************************************************************/
void DAPI VerFreeVersion(
    __in VERUTIL_VERSION* pVersion
    );

/*******************************************************************
 VerParseVersion - parses the string into a Verutil version.

*******************************************************************/
HRESULT DAPI VerParseVersion(
    __in_z LPCWSTR wzVersion,
    __in SIZE_T cchVersion,
    __in BOOL fStrict,
    __out VERUTIL_VERSION** ppVersion
    );

/*******************************************************************
 VerParseVersion - parses the QWORD into a Verutil version.

*******************************************************************/
HRESULT DAPI VerVersionFromQword(
    __in DWORD64 qwVersion,
    __out VERUTIL_VERSION** ppVersion
    );

#ifdef __cplusplus
}
#endif