summaryrefslogtreecommitdiffstats
path: root/private/ole32/ih/wx86grpa.hxx
blob: 469a5ebf31cc5f98d5b49a98c7a09951f912d527 (plain) (blame)
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
/*++                 

Copyright (c) 1995 Microsoft Corporation

Module Name:

    wx86grpa.h

Abstract:
    
    Ole interface into Wx86

Author:

    29-Sep-1995 AlanWar

Revision History:

--*/

#ifdef WX86OLE

typedef HRESULT (*PFNDLLGETCLASSOBJECT)(REFCLSID, REFIID, LPVOID *);
typedef HRESULT (*PFNDLLCANUNLOADNOW)(void);


typedef PFNDLLGETCLASSOBJECT (*WX86PFNGCA)(PVOID);
typedef PFNDLLCANUNLOADNOW (*WX86PFNCUN)(PVOID);
typedef void (*WX86GPFNFCB)(PVOID);
typedef BOOL (*WX86PFNNXPSF)(IUnknown *, REFIID);
typedef BOOL (*WX86PFNIN2XP)(IUnknown *);

typedef PVOID *(*PFNWX86LOADWHOLE32)(
    void
    );
typedef void (*PFNWX86UNLOADWHOLE32)(
    void
);

typedef PVOID (*WHOLEUNMARSHALLEDINSAMEAPT)(PVOID pv, REFIID piid);

typedef void (*WHOLEAGGREGATEPROXY)(IUnknown *, IUnknown *);

#define WholeNeedX86PSFactoryIdx	8
#define WholeIsN2XProxyIdx		9
#define WholeThunkDllGetClassObjectIdx 10
#define WholeThunkDllCanUnloadNowIdx   11
#define WholeUnmarshalledInSameApt     13
#define WholeAggregateProxy            14

class CWx86 {
public:	
    CWx86();
    ~CWx86();
    
    PFNDLLGETCLASSOBJECT TranslateDllGetClassObject(PFNDLLGETCLASSOBJECT pv);
    PFNDLLCANUNLOADNOW TranslateDllCanUnloadNow(PFNDLLCANUNLOADNOW pv);
    BOOL IsModuleX86(HMODULE hModule);
    BOOL IsWx86Enabled(void);
    void SetStubInvokeFlag(UCHAR bFlag);
    BOOL NeedX86PSFactory(IUnknown *punkObj, REFIID riid);
    BOOL IsN2XProxy(IUnknown *punk);
    BOOL SetLoadAsX86(BOOL bFlag);
    BOOL IsWx86Calling(void);
    BOOL SetIsWx86Calling(BOOL bFlag);
    PVOID UnmarshalledInSameApt(PVOID pv, REFIID piid);
    void AggregateProxy(IUnknown *, IUnknown *);
    BOOL IsWx86Installed(void);
    
private:
    PVOID *_apvWholeFuncs;
    BOOL _fIsWx86Installed;
};

inline BOOL CWx86::IsWx86Installed(void)
{
    return(_fIsWx86Installed);
}

#endif