aboutsummaryrefslogtreecommitdiff
path: root/src/balutil/inc/BalBaseBAFunctionsProc.h
blob: 7e89fe832a54974a66a4e18a262835aea66b4331 (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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#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.


#include "BalBaseBootstrapperApplicationProc.h"
#include "BAFunctions.h"
#include "IBAFunctions.h"

static HRESULT BalBaseBAFunctionsProcOnThemeLoaded(
    __in IBAFunctions* pBAFunctions,
    __in BA_FUNCTIONS_ONTHEMELOADED_ARGS* pArgs,
    __inout BA_FUNCTIONS_ONTHEMELOADED_RESULTS* /*pResults*/
    )
{
    return pBAFunctions->OnThemeLoaded(pArgs->pTheme, pArgs->pWixLoc);
}

static HRESULT BalBaseBAFunctionsProcWndProc(
    __in IBAFunctions* pBAFunctions,
    __in BA_FUNCTIONS_WNDPROC_ARGS* pArgs,
    __inout BA_FUNCTIONS_WNDPROC_RESULTS* pResults
    )
{
    return pBAFunctions->WndProc(pArgs->pTheme, pArgs->hWnd, pArgs->uMsg, pArgs->wParam, pArgs->lParam, &pResults->lres);
}

/*******************************************************************
BalBaseBAFunctionsProc - requires pvContext to be of type IBAFunctions.
Provides a default mapping between the message based BAFunctions interface and
the COM-based BAFunctions interface.

*******************************************************************/
static HRESULT WINAPI BalBaseBAFunctionsProc(
    __in BA_FUNCTIONS_MESSAGE message,
    __in const LPVOID pvArgs,
    __inout LPVOID pvResults,
    __in_opt LPVOID pvContext
    )
{
    IBAFunctions* pBAFunctions = reinterpret_cast<IBAFunctions*>(pvContext);
    HRESULT hr = pBAFunctions->BAFunctionsProc(message, pvArgs, pvResults, pvContext);

    if (E_NOTIMPL == hr)
    {
        switch (message)
        {
        case BA_FUNCTIONS_MESSAGE_ONDETECTBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONDETECTCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONPLANBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONPLANCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONSTARTUP:
        case BA_FUNCTIONS_MESSAGE_ONSHUTDOWN:
        case BA_FUNCTIONS_MESSAGE_ONSYSTEMSHUTDOWN:
        case BA_FUNCTIONS_MESSAGE_ONDETECTFORWARDCOMPATIBLEBUNDLE:
        case BA_FUNCTIONS_MESSAGE_ONDETECTUPDATEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONDETECTUPDATE:
        case BA_FUNCTIONS_MESSAGE_ONDETECTUPDATECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONDETECTRELATEDBUNDLE:
        case BA_FUNCTIONS_MESSAGE_ONDETECTPACKAGEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONDETECTRELATEDMSIPACKAGE:
        case BA_FUNCTIONS_MESSAGE_ONDETECTPATCHTARGET:
        case BA_FUNCTIONS_MESSAGE_ONDETECTMSIFEATURE:
        case BA_FUNCTIONS_MESSAGE_ONDETECTPACKAGECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONPLANRELATEDBUNDLE:
        case BA_FUNCTIONS_MESSAGE_ONPLANPACKAGEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONPLANPATCHTARGET:
        case BA_FUNCTIONS_MESSAGE_ONPLANMSIFEATURE:
        case BA_FUNCTIONS_MESSAGE_ONPLANPACKAGECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONAPPLYBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONELEVATEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONELEVATECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONPROGRESS:
        case BA_FUNCTIONS_MESSAGE_ONERROR:
        case BA_FUNCTIONS_MESSAGE_ONREGISTERBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONREGISTERCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONCACHEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONCACHEPACKAGEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONCACHEACQUIREBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONCACHEACQUIREPROGRESS:
        case BA_FUNCTIONS_MESSAGE_ONCACHEACQUIRERESOLVING:
        case BA_FUNCTIONS_MESSAGE_ONCACHEACQUIRECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONCACHEVERIFYBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONCACHEVERIFYCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONCACHEPACKAGECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONCACHECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTEPACKAGEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTEPATCHTARGET:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTEPROGRESS:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTEMSIMESSAGE:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTEFILESINUSE:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTEPACKAGECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONEXECUTECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONUNREGISTERBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONUNREGISTERCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONAPPLYCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONPLANMSIPACKAGE:
        case BA_FUNCTIONS_MESSAGE_ONBEGINMSITRANSACTIONBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN:
        case BA_FUNCTIONS_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE:
        case BA_FUNCTIONS_MESSAGE_ONPLANNEDPACKAGE:
        case BA_FUNCTIONS_MESSAGE_ONPLANFORWARDCOMPATIBLEBUNDLE:
            hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext);
            break;
        case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED:
            hr = BalBaseBAFunctionsProcOnThemeLoaded(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_ONTHEMELOADED_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_ONTHEMELOADED_RESULTS*>(pvResults));
            break;
        case BA_FUNCTIONS_MESSAGE_WNDPROC:
            hr = BalBaseBAFunctionsProcWndProc(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_WNDPROC_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_WNDPROC_RESULTS*>(pvResults));
            break;
        }
    }

    return hr;
}