97 lines
3.4 KiB
C
97 lines
3.4 KiB
C
#ifndef _WX86PRI_H_
|
|
#define _WX86PRI_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//
|
|
// Flags used to communicate with Ole32 via Wx86Tib->Flags
|
|
|
|
#define WX86FLAG_CALLTHUNKED 0x80
|
|
#define WX86FLAG_QIFROMX86 0x40
|
|
#define WX86FLAG_QIFROMXNATIVE 0x20
|
|
|
|
//
|
|
typedef PVOID *(*PFNWX86GETOLEFUNCTIONTABLE)(void);
|
|
#define WX86GETOLEFUNCTIONTABLENAME "Wx86GetOleFunctionTable"
|
|
|
|
//
|
|
typedef PVOID *(*PFNWX86INITIALIZEOLE)(void);
|
|
#define WX86INITIALIZEOLENAME "Wx86InitializeOle"
|
|
|
|
//
|
|
typedef void (*PFNWX86DEINITIALIZEOLE)(void);
|
|
#define WX86DEINITIALIZEOLENAME "Wx86DeinitializeOle"
|
|
|
|
// apvWholeFunctions is a data export that is a pointer to a table of function
|
|
// pointers with entrypoints into whole32. Below are friendly names, corresponding
|
|
// indicies within the table, prototypes and useful macros. It is assumed
|
|
// that apvWholeFuncs points to the array of function pointers returned.
|
|
|
|
#define WholeMapIFacePtrIdx 1
|
|
#define WholeCheckFreeTempProxyIdx 3
|
|
#define WholeIID2IIDIDXIdx 4
|
|
#define WholeDllGetClassObjectThunkIdx 5
|
|
#define WholeInitializeIdx 6
|
|
#define WholeDeinitializeIdx 7
|
|
#define WholeNeedX86PSFactoryIdx 8
|
|
#define WholeIsN2XProxyIdx 9
|
|
#define WholeThunkDllGetClassObjectIdx 10
|
|
#define WholeThunkDllCanUnloadNowIdx 11
|
|
#define WholeModuleLogFlagsIdx 12
|
|
#define WholeUnmarshalledInSameApt 13
|
|
#define WholeAggregateProxyIdx 14
|
|
#define WholeIUnknownAddRefInternalIdx 15
|
|
#define Wx86LoadX86DllIdx 16
|
|
#define Wx86FreeX86DllIdx 17
|
|
#define WholeResolveProxyIdx 18
|
|
#define WholePatchOuterUnknownIdx 19
|
|
|
|
#define WHOLEFUNCTIONTABLESIZE 19
|
|
|
|
//
|
|
// types of interface proxy
|
|
typedef enum _proxytype
|
|
{
|
|
X86toNative = 0, // proxy for x86 calling native interface
|
|
NativetoX86 = 1, // proxy for native calling x86 interface
|
|
ProxyAvail = 2 // proxy is not currently in use
|
|
} PROXYTYPE;
|
|
|
|
typedef enum {
|
|
ResolvedToProxy, // interface mapping resolved with proxy
|
|
ResolvedToActual, // iface mapping resolved with actual iface
|
|
} IFACERESOLVETYPE;
|
|
|
|
|
|
typedef struct _cifaceproxy *PCIP;
|
|
|
|
|
|
typedef HRESULT (*PFNDLLGETCLASSOBJECT)(REFCLSID, REFIID, LPVOID *);
|
|
typedef HRESULT (*PFNDLLCANUNLOADNOW)(void);
|
|
|
|
typedef void* (*WHOLEMAPIFACEPTR)(IUnknown*, IUnknown*, PROXYTYPE, int, BOOL, BOOL, HRESULT*, BOOL, PCIP);
|
|
typedef void (*WHOLECHECKFREETEMPPROXY)(void*);
|
|
typedef int (*WHOLEIID2IIDIDX)(const IID*);
|
|
typedef HRESULT (*WHOLELDLLGETCLASSOBJECTTHUNK)(IID *piid, LPVOID *ppv, HRESULT hr, BOOL fNativetoX86);
|
|
typedef BOOL (*WHOLEINITIALIZE)(void);
|
|
typedef void (*WHOLEDEINITIALIZE)(void);
|
|
typedef BOOL (*WHOLENEEDX86PSFACTORY)(IUnknown*, REFIID);
|
|
typedef BOOL (*WHOLEISN2XPROXY)(IUnknown *punk);
|
|
typedef PFNDLLGETCLASSOBJECT (*WHOLETHUNKDLLGETCLASSOBJECT)(PFNDLLGETCLASSOBJECT pv);
|
|
typedef PFNDLLCANUNLOADNOW (*WHOLETHUNKDLLCANUNLOADNOW)(PFNDLLCANUNLOADNOW pv);
|
|
typedef PVOID (*WHOLEUNMARSHALLEDINSAMEAPT)(PVOID, REFIID);
|
|
typedef void (*WHOLEAGGREGATEPROXY)(IUnknown *, IUnknown *);
|
|
typedef DWORD (*WHOLEIUNKNOWNADDREFINTERNAL)(IUnknown *, IUnknown *, BOOL, IFACERESOLVETYPE);
|
|
typedef HMODULE (*PFNWX86LOADX86DLL)(LPCWSTR, DWORD);
|
|
typedef BOOL (*PFNWX86FREEX86DLL)(HMODULE);
|
|
typedef IUnknown* (*WHOLERESOLVEPROXY)(IUnknown*, PROXYTYPE);
|
|
typedef void (*WHOLEPATCHOUTERUNKNOWN)(IUnknown*);
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
#endif
|