Changeset 2640 for trunk/include/win


Ignore:
Timestamp:
Feb 5, 2000, 12:12:19 AM (26 years ago)
Author:
hugh
Message:

DDraw enhancemet for COM interface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/win/wine/dd_obj_base.h

    r280 r2640  
    1 /* $Id: dd_obj_base.h,v 1.2 1999-07-07 07:57:37 phaller Exp $ */
     1/* $Id: dd_obj_base.h,v 1.3 2000-02-04 23:12:19 hugh Exp $ */
    22/*
    33 * This file defines the macros and types necessary to define COM interfaces,
     
    438438
    439439
    440 #define ICOM_CALL(xfn, p)  (p)->lpvtbl->fn##xfn(p)
    441 #define ICOM_CALL1(xfn, p,a) (p)->lpvtbl->fn##xfn(p,a)
    442 #define ICOM_CALL2(xfn, p,a,b) (p)->lpvtbl->fn##xfn(p,a,b)
    443 #define ICOM_CALL3(xfn, p,a,b,c) (p)->lpvtbl->fn##xfn(p,a,b,c)
    444 #define ICOM_CALL4(xfn, p,a,b,c,d) (p)->lpvtbl->fn##xfn(p,a,b,c,d)
    445 #define ICOM_CALL5(xfn, p,a,b,c,d,e) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e)
    446 #define ICOM_CALL6(xfn, p,a,b,c,d,e,f) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f)
    447 #define ICOM_CALL7(xfn, p,a,b,c,d,e,f,g) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f,g)
    448 #define ICOM_CALL8(xfn, p,a,b,c,d,e,f,g,h) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f,g,h)
    449 #define ICOM_CALL10(xfn, p,a,b,c,d,e,f,g,h,i,j) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f,g,h,i,j)
     440#define ICOM_CALL(xfn, p)  (p)->lpvtbl->xfn(p)
     441#define ICOM_CALL1(xfn, p,a) (p)->lpvtbl->xfn(p,a)
     442#define ICOM_CALL2(xfn, p,a,b) (p)->lpvtbl->xfn(p,a,b)
     443#define ICOM_CALL3(xfn, p,a,b,c) (p)->lpvtbl->xfn(p,a,b,c)
     444#define ICOM_CALL4(xfn, p,a,b,c,d) (p)->lpvtbl->xfn(p,a,b,c,d)
     445#define ICOM_CALL5(xfn, p,a,b,c,d,e) (p)->lpvtbl->xfn(p,a,b,c,d,e)
     446#define ICOM_CALL6(xfn, p,a,b,c,d,e,f) (p)->lpvtbl->xfn(p,a,b,c,d,e,f)
     447#define ICOM_CALL7(xfn, p,a,b,c,d,e,f,g) (p)->lpvtbl->xfn(p,a,b,c,d,e,f,g)
     448#define ICOM_CALL8(xfn, p,a,b,c,d,e,f,g,h) (p)->lpvtbl->xfn(p,a,b,c,d,e,f,g,h)
     449#define ICOM_CALL10(xfn, p,a,b,c,d,e,f,g,h,i,j) (p)->lpvtbl->xfn(p,a,b,c,d,e,f,g,h,i,j)
    450450
    451451
     
    477477    ICOM_METHOD (ULONG,AddRef) \
    478478    ICOM_METHOD (ULONG,Release)
     479
    479480#ifdef ICOM_CINTERFACE
    480 typedef struct ICOM_VTABLE(IUnknown) ICOM_VTABLE(IUnknown);
    481 struct IUnknown {
     481  typedef struct ICOM_VTABLE(IUnknown) ICOM_VTABLE(IUnknown);
     482  struct IUnknown
     483  {
    482484    ICOM_VTABLE(IUnknown)* lpvtbl;
    483 };
    484 struct ICOM_VTABLE(IUnknown) {
     485  };
     486  struct ICOM_VTABLE(IUnknown)
     487  {
    485488    ICOM_METHOD2(HRESULT,QueryInterface,REFIID,riid, LPVOID*,ppvObj)
    486489#else /* ICOM_CINTERFACE */
    487 struct IUnknown {
    488 #ifndef ICOM_VIRTUAL_METHODS
    489     union {
     490  struct IUnknown
     491  {
     492    #ifndef ICOM_VIRTUAL_METHODS
     493      union
     494      {
    490495        const void* lpvtbl;
    491496        HRESULT (CALLBACK *fnQueryInterface)(IUnknown* me, REFIID riid, LPVOID* ppvObj);
    492     } t;
    493     inline int QueryInterface(REFIID a, LPVOID* b) { return ((IUnknown*)t.lpvtbl)->t.fnQueryInterface(this,a,b); }
    494 #else /* ICOM_VIRTUAL_METHODS */
    495     ICOM_METHOD2(HRESULT,QueryInterface,REFIID,riid, LPVOID*,ppvObj)
    496 #endif /* ICOM_VIRTUAL_METHODS */
     497      } t;
     498      inline int QueryInterface(REFIID a, LPVOID* b) { return ((IUnknown*)t.lpvtbl)->t.fnQueryInterface(this,a,b); }
     499    #else /* ICOM_VIRTUAL_METHODS */
     500      ICOM_METHOD2(HRESULT,QueryInterface,REFIID,riid, LPVOID*,ppvObj)
     501    #endif /* ICOM_VIRTUAL_METHODS */
    497502#endif /* ICOM_CINTERFACE */
    498503    ICOM_METHOD (ULONG,AddRef)
    499504    ICOM_METHOD (ULONG,Release)
    500 };
     505  };
     506
    501507#undef ICOM_INTERFACE
    502508
     
    509515
    510516
     517/*****************************************************************************
     518 * IClassFactory interface
     519 */
     520#define ICOM_INTERFACE IClassFactory
     521#define IClassFactory_METHODS \
     522    ICOM_METHOD3(HRESULT,CreateInstance, LPUNKNOWN,pUnkOuter, REFIID,riid, LPVOID*,ppvObject) \
     523    ICOM_METHOD1(HRESULT,LockServer,     BOOL,fLock)
     524#define IClassFactory_IMETHODS \
     525    IUnknown_IMETHODS \
     526    IClassFactory_METHODS
     527
     528
     529ICOM_DEFINE(IClassFactory,IUnknown)
     530#undef ICOM_INTERFACE
     531
     532/*** IUnknown methods ***/
     533#define IClassFactory_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
     534#define IClassFactory_AddRef(p)             ICOM_CALL (AddRef,p)
     535#define IClassFactory_Release(p)            ICOM_CALL (Release,p)
     536/*** IClassFactory methods ***/
     537#define IClassFactory_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
     538#define IClassFactory_LockServer(p,a)         ICOM_CALL1(LockServer,p,a)
     539
     540
     541/*****************************************************************************
     542 * IMalloc interface
     543 */
     544#define ICOM_INTERFACE IMalloc16
     545#define IMalloc16_METHODS \
     546    ICOM_METHOD1 (LPVOID,Alloc,       DWORD,cb) \
     547    ICOM_METHOD2 (LPVOID,Realloc,     LPVOID,pv, DWORD,cb) \
     548    ICOM_VMETHOD1(       Free,        LPVOID,pv) \
     549    ICOM_CMETHOD1(DWORD, GetSize,     LPVOID,pv) \
     550    ICOM_CMETHOD1(INT16, DidAlloc,    LPVOID,pv) \
     551    ICOM_METHOD  (LPVOID,HeapMinimize)
     552#define IMalloc16_IMETHODS \
     553    IUnknown_IMETHODS \
     554    IMalloc16_METHODS
     555ICOM_DEFINE(IMalloc16,IUnknown)
     556#undef ICOM_INTERFACE
     557
     558/*** IUnknown methods ***/
     559#define IMalloc16_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
     560#define IMalloc16_AddRef(p)             ICOM_CALL (AddRef,p)
     561#define IMalloc16_Release(p)            ICOM_CALL (Release,p)
     562/*** IMalloc16 methods ***/
     563#define IMalloc16_Alloc(p,a)      ICOM_CALL1(Alloc,p,a)
     564#define IMalloc16_Realloc(p,a,b)  ICOM_CALL2(Realloc,p,a,b)
     565#define IMalloc16_Free(p,a)       ICOM_CALL1(Free,p,a)
     566#define IMalloc16_GetSize(p,a)    ICOM_CALL1(GetSize,p,a)
     567#define IMalloc16_DidAlloc(p,a)   ICOM_CALL1(DidAlloc,p,a)
     568#define IMalloc16_HeapMinimize(p) ICOM_CALL (HeapMinimize,p)
     569
     570
     571#define ICOM_INTERFACE IMalloc
     572#define IMalloc_METHODS \
     573    ICOM_METHOD1 (LPVOID,Alloc,       DWORD,cb) \
     574    ICOM_METHOD2 (LPVOID,Realloc,     LPVOID,pv, DWORD,cb) \
     575    ICOM_VMETHOD1(       Free,        LPVOID,pv) \
     576    ICOM_CMETHOD1(DWORD, GetSize,     LPVOID,pv) \
     577    ICOM_CMETHOD1(INT, DidAlloc,    LPVOID,pv) \
     578    ICOM_METHOD  (LPVOID,HeapMinimize)
     579#define IMalloc_IMETHODS \
     580    IUnknown_IMETHODS \
     581    IMalloc_METHODS
     582ICOM_DEFINE(IMalloc,IUnknown)
     583#undef ICOM_INTERFACE
     584
     585/*** IUnknown methods ***/
     586#define IMalloc_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
     587#define IMalloc_AddRef(p)             ICOM_CALL (AddRef,p)
     588#define IMalloc_Release(p)            ICOM_CALL (Release,p)
     589/*** IMalloc32 methods ***/
     590#define IMalloc_Alloc(p,a)      ICOM_CALL1(Alloc,p,a)
     591#define IMalloc_Realloc(p,a,b)  ICOM_CALL2(Realloc,p,a,b)
     592#define IMalloc_Free(p,a)       ICOM_CALL1(Free,p,a)
     593#define IMalloc_GetSize(p,a)    ICOM_CALL1(GetSize,p,a)
     594#define IMalloc_DidAlloc(p,a)   ICOM_CALL1(DidAlloc,p,a)
     595#define IMalloc_HeapMinimize(p) ICOM_CALL (HeapMinimize,p)
     596
     597
     598HRESULT WINAPI CoCreateStandardMalloc16(DWORD dwMemContext, LPMALLOC16* lpMalloc);
     599
     600HRESULT WINAPI CoGetMalloc16(DWORD dwMemContext,LPMALLOC16* lpMalloc);
     601HRESULT WINAPI CoGetMalloc(DWORD dwMemContext,LPMALLOC* lpMalloc);
     602
     603LPVOID WINAPI CoTaskMemAlloc(ULONG size);
     604
     605void WINAPI CoTaskMemFree(LPVOID ptr);
     606
     607/* FIXME: unimplemented */
     608LPVOID WINAPI CoTaskMemRealloc(LPVOID ptr, ULONG size);
     609
     610
     611/*****************************************************************************
     612 * Additional API
     613 */
     614
     615HRESULT WINAPI CoCreateGuid(GUID* pguid);
     616
     617void WINAPI CoFreeAllLibraries(void);
     618
     619void WINAPI CoFreeLibrary(HINSTANCE hLibrary);
     620
     621void WINAPI CoFreeUnusedLibraries(void);
     622
     623HRESULT WINAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv);
     624
     625HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved, REFIID iid, LPVOID *ppv);
     626
     627HRESULT WINAPI CoInitialize16(LPVOID lpReserved);
     628HRESULT WINAPI CoInitialize(LPVOID lpReserved);
     629HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit);
     630
     631void WINAPI CoUninitialize16(void);
     632void WINAPI CoUninitialize(void);
     633
     634typedef enum tagCOINIT
     635{
     636    COINIT_APARTMENTTHREADED  = 0x2, /* Apartment model */
     637    COINIT_MULTITHREADED      = 0x0, /* OLE calls objects on any thread */
     638    COINIT_DISABLE_OLE1DDE    = 0x4, /* Don't use DDE for Ole1 support */
     639    COINIT_SPEED_OVER_MEMORY  = 0x8  /* Trade memory for speed */
     640} COINIT;
     641
     642
     643/* FIXME: not implemented */
     644BOOL WINAPI CoIsOle1Class(REFCLSID rclsid);
     645
     646HINSTANCE WINAPI CoLoadLibrary(LPOLESTR16 lpszLibName, BOOL bAutoFree);
     647
     648HRESULT WINAPI CoLockObjectExternal16(LPUNKNOWN pUnk, BOOL16 fLock, BOOL16 fLastUnlockReleases);
     649HRESULT WINAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases);
     650
     651/* class registration flags; passed to CoRegisterClassObject */
     652typedef enum tagREGCLS
     653{
     654    REGCLS_SINGLEUSE = 0,
     655    REGCLS_MULTIPLEUSE = 1,
     656    REGCLS_MULTI_SEPARATE = 2,
     657    REGCLS_SUSPENDED = 4
     658} REGCLS;
     659
     660HRESULT WINAPI CoRegisterClassObject16(REFCLSID rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister);
     661HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister);
     662
     663HRESULT WINAPI CoRevokeClassObject(DWORD dwRegister);
     664
     665void WINAPI CoUninitialize16(void);
     666void WINAPI CoUninitialize(void);
     667
     668/*****************************************************************************
     669 *  COM Server dll - exports
     670 */
     671HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv);
     672HRESULT WINAPI DllCanUnloadNow(void);
     673
     674/*****************************************************************************
     675 * Internal WINE API
     676 */
     677#ifdef __WINE__
     678HRESULT WINAPI WINE_StringFromCLSID(const CLSID *id, LPSTR);
     679#endif
     680
     681
    511682#endif /* __WINE_WINE_OBJ_BASE_H */
    512683
Note: See TracChangeset for help on using the changeset viewer.