59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
|
// Create Instance functions
|
||
|
|
||
|
#ifndef _SCCLS_H_
|
||
|
#define _SCCLS_H_
|
||
|
|
||
|
//
|
||
|
// global object array - used for class factory, auto registration, type libraries, oc information
|
||
|
//
|
||
|
typedef struct tagOBJECTINFO
|
||
|
{
|
||
|
#ifdef __cplusplus
|
||
|
void *cf;
|
||
|
#else
|
||
|
const IClassFactoryVtbl *cf;
|
||
|
#endif
|
||
|
CLSID const* pclsid;
|
||
|
HRESULT (*pfnCreateInstance)(IUnknown* pUnkOuter, IUnknown** ppunk, const struct tagOBJECTINFO *);
|
||
|
|
||
|
// for OCs and automation objects:
|
||
|
IID const* piid;
|
||
|
IID const* piidEvents;
|
||
|
long lVersion;
|
||
|
DWORD dwOleMiscFlags;
|
||
|
DWORD dwClassFactFlags;
|
||
|
} OBJECTINFO;
|
||
|
|
||
|
typedef OBJECTINFO const * LPCOBJECTINFO;
|
||
|
|
||
|
#define OIF_ALLOWAGGREGATION 0x0001
|
||
|
|
||
|
|
||
|
|
||
|
#define VERSION_2 2 // so we don't get confused by too many integers
|
||
|
#define VERSION_1 1
|
||
|
#define VERSION_0 0
|
||
|
#define COCREATEONLY NULL,NULL,VERSION_0,0,0 // piid,piidEvents,lVersion,dwOleMiscFlags,dwClassFactFlags
|
||
|
#define COCREATEONLY_NOFLAGS NULL,NULL,VERSION_0,0 // piid,piidEvents,lVersion,dwOleMiscFlags
|
||
|
|
||
|
|
||
|
|
||
|
STDAPI CShellAppManager_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi);
|
||
|
STDAPI CEnumInstalledApps_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi);
|
||
|
#ifndef DOWNLEVEL_PLATFORM
|
||
|
STDAPI CDarwinAppPublisher_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi);
|
||
|
#endif //DOWNLEVEL_PLATFORM
|
||
|
|
||
|
// to save some typing:
|
||
|
#define CLSIDOFOBJECT(p) (*((p)->_pObjectInfo->pclsid))
|
||
|
#define VERSIONOFOBJECT(p) ((p)->_pObjectInfo->lVersion)
|
||
|
#define EVENTIIDOFCONTROL(p) (*((p)->_pObjectInfo->piidEvents))
|
||
|
#define OLEMISCFLAGSOFCONTROL(p) ((p)->_pObjectInfo->dwOleMiscFlags)
|
||
|
|
||
|
extern const OBJECTINFO g_ObjectInfo[]; // sccls.c
|
||
|
|
||
|
STDAPI GetClassObject(REFCLSID rclsid, REFIID riid, void **ppv);
|
||
|
|
||
|
#endif // _SCCLS_H_
|
||
|
|