From 573eb962990a269c6cfb7bdffb37ea7d8abac4e2 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Wed, 17 Feb 1999 17:36:27 +0000 Subject: [PATCH] Fixed some ICOM_INHERIT stuff and added new related API functions. --- include/wine/obj_clientserver.h | 76 +++++++++++++++-- include/wine/obj_misc.h | 143 ++++++++++++++++++++++++++++---- 2 files changed, 196 insertions(+), 23 deletions(-) diff --git a/include/wine/obj_clientserver.h b/include/wine/obj_clientserver.h index 30f7c19e358..01b79c2fd34 100644 --- a/include/wine/obj_clientserver.h +++ b/include/wine/obj_clientserver.h @@ -49,7 +49,8 @@ typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES ICOM_METHOD8(HRESULT,SetBlanket, IUnknown*,pProxy, DWORD,pAuthnSvc, DWORD,pAuthzSvc, OLECHAR32*,pServerPrincName, DWORD,pAuthnLevel, DWORD,pImpLevel, void*,pAuthInfo, DWORD,pCapabilites); \ ICOM_METHOD2(HRESULT,CopyProxy, IUnknown*,pProxy, IUnknown**,ppCopy); #define IClientSecurity_IMETHODS \ - ICOM_INHERITS(IClientSecurity,IUnknown) + IUnknown_IMETHODS \ + IClientSecurity_METHODS ICOM_DEFINE(IClientSecurity,IUnknown) #undef ICOM_INTERFACE @@ -65,7 +66,6 @@ ICOM_DEFINE(IClientSecurity,IUnknown) #endif - /***************************************************************************** * IExternalConnection interface */ @@ -81,7 +81,8 @@ typedef enum tagEXTCONN ICOM_METHOD2(DWORD,AddConnection, DWORD,extconn, DWORD,reserved); \ ICOM_METHOD3(DWORD,ReleaseConnection, DWORD,extconn, DWORD,reserved, BOOL32,fLastReleaseCloses); #define IExternalConnection_IMETHODS \ - ICOM_INHERITS(IExternalConnection,IUnknown) + IUnknown_IMETHODS \ + IExternalConnection_METHODS ICOM_DEFINE(IExternalConnection,IUnknown) #undef ICOM_INTERFACE @@ -144,7 +145,8 @@ typedef struct tagINTERFACEINFO ICOM_METHOD3(DWORD,RetryRejectedCall, HTASK32,htaskCallee, DWORD,dwTickCount, DWORD,dwRejectType); \ ICOM_METHOD3(DWORD,MessagePending, HTASK32,htaskCallee, DWORD,dwTickCount, DWORD,dwRejectType); #define IMessageFilter_IMETHODS \ - ICOM_INHERITS(IMessageFilter,IUnknown) + IUnknown_IMETHODS \ + IMessageFilter_METHODS ICOM_DEFINE(IMessageFilter,IUnknown) #undef ICOM_INTERFACE @@ -175,7 +177,8 @@ HRESULT WINAPI CoRegisterMessageFilter32(LPMESSAGEFILTER lpMessageFilter,LPMESSA ICOM_METHOD (HRESULT,RevertToSelf); \ ICOM_METHOD (BOOL32, IsImpersonating); #define IServerSecurity_IMETHODS \ - ICOM_INHERITS(IServerSecurity,IUnknown) + IUnknown_IMETHODS \ + IServerSecurity_METHODS ICOM_DEFINE(IServerSecurity,IUnknown) #undef ICOM_INTERFACE @@ -192,4 +195,67 @@ ICOM_DEFINE(IServerSecurity,IUnknown) #endif +/***************************************************************************** + * Additional client API + */ + +/* FIXME: not implemented */ +HRESULT WINAPI CoCopyProxy(IUnknown* pProxy, IUnknown** ppCopy); + +/* FIXME: not implemented */ +HRESULT WINAPI CoQueryProxyBlanket(IUnknown* pProxy, DWORD* pwAuthnSvc, DWORD* pAuthzSvc, OLECHAR32** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTH_IDENTITY_HANDLE* pAuthInfo, DWORD* pCapabilites); + +/* FIXME: not implemented */ +HRESULT WINAPI CoSetProxyBlanket(IUnknown* pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR32* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities); + + +/***************************************************************************** + * Additional server API + */ + +/* FIXME: not implemented */ +ULONG WINAPI CoAddRefServerProcess(void); + +/* FIXME: not implemented */ +HRESULT WINAPI CoImpersonateClient(void); + +/* FIXME: not implemented */ +HRESULT WINAPI CoQueryClientBlanket(DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR16** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTHZ_HANDLE* pPrivs, DWORD* pCapabilities); + +/* FIXME: not implemented */ +HRESULT WINAPI CoReleaseServerProcess(void); + +/* FIXME: not implemented */ +HRESULT WINAPI CoRevertToSelf(void); + +/* FIXME: not implemented */ +HRESULT WINAPI CoSuspendClassObjects(void); + + +/***************************************************************************** + * Additional API + */ + +/* FIXME: not implemented */ +HRESULT WINAPI CoGetCallContext(REFIID riid, void** ppInterface); + +/* FIXME: not implemented */ +HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID* pClsid); + +/* FIXME: not implemented */ +HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE* asAuthSvc, void* pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void* pReserved2, DWORD dwCapabilities, void* pReserved3); + +/* FIXME: not implemented */ +BOOL32 WINAPI CoIsHandlerConnected(LPUNKNOWN pUnk); + +/* FIXME: not implemented */ +HRESULT WINAPI CoQueryAuthenticationServices(DWORD* pcAuthSvc, SOLE_AUTHENTICATION_SERVICE** asAuthSvc); + +/* FIXME: not implemented */ +HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid); + +/* FIXME: not implemented */ +HRESULT WINAPI CoResumeClassObjects(void); + + #endif /* __WINE_WINE_OBJ_CLIENTSERVER_H */ diff --git a/include/wine/obj_misc.h b/include/wine/obj_misc.h index 56ed463045a..b493df569df 100644 --- a/include/wine/obj_misc.h +++ b/include/wine/obj_misc.h @@ -31,47 +31,154 @@ typedef struct IMultiQI IMultiQI,*LPMULTIQI; * IEnumString interface */ #define ICOM_INTERFACE IEnumString -ICOM_BEGIN(IEnumString,IUnknown) - ICOM_METHOD3 (HRESULT, Next, ULONG, celt, LPOLESTR32, rgelt, ULONG*, pceltFetched); - ICOM_METHOD1 (HRESULT, Skip, ULONG, celt); - ICOM_METHOD (HRESULT, Reset); +#define IEnumString_METHODS \ + ICOM_METHOD3(HRESULT,Next, ULONG,celt, LPOLESTR32*,rgelt, ULONG*,pceltFethed); \ + ICOM_METHOD1(HRESULT,Skip, ULONG,celt); \ + ICOM_METHOD (HRESULT,Reset); \ ICOM_METHOD1 (HRESULT, Clone, IEnumString**, ppenum); -ICOM_END(IEnumString) - +#define IEnumString_IMETHODS \ + IUnknown_IMETHODS \ + IEnumString_METHODS +ICOM_DEFINE(IEnumString,IUnknown) #undef ICOM_INTERFACE -#if !defined(__cplusplus) || defined(CINTERFACE) +#ifdef ICOM_CINTERFACE /*** IUnknown methods ***/ -#define IEnumString_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b) -#define IEnumString_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p) -#define IEnumString_Release(p) ICOM_ICALL (IUnknown,Release,p) -/* IBindCtx methods*/ -#define IEnumString_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c); -#define IEnumString_Skip(p,a) ICOM_CALL1(Skip,p,a); -#define IEnumString_Reset(p,a) ICOM_CALL(Reset,p); -#define IEnumString_Clone(p,a) ICOM_CALL1(Clone,p,a); +#define IEnumString_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) +#define IEnumString_AddRef(p) ICOM_CALL (AddRef,p) +#define IEnumString_Release(p) ICOM_CALL (Release,p) +/*** IEnumString methods ***/ +#define IEnumString_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c) +#define IEnumString_Skip(p,a) ICOM_CALL1(Skip,p,a) +#define IEnumString_Reset(p) ICOM_CALL (Reset,p) +#define IEnumString_Clone(p,a) ICOM_CALL1(Clone,p,a) #endif #define CreateEnumString WINELIB_NAME(CreateEnumString) - /***************************************************************************** * IEnumUnknown interface */ -/* FIXME: not implemented */ +#define ICOM_INTERFACE IEnumUnknown +#define IEnumUnknown_METHODS \ + ICOM_METHOD3(HRESULT,Next, ULONG,celt, IUnknown**,rgelt, ULONG*,pceltFethed); \ + ICOM_METHOD1(HRESULT,Skip, ULONG,celt); \ + ICOM_METHOD (HRESULT,Reset); \ + ICOM_METHOD1(HRESULT,Clone, IEnumUnknown**,ppenum); +#define IEnumUnknown_IMETHODS \ + IUnknown_IMETHODS \ + IEnumUnknown_METHODS +ICOM_DEFINE(IEnumUnknown,IUnknown) +#undef ICOM_INTERFACE + +#ifdef ICOM_CINTERFACE +/*** IUnknown methods ***/ +#define IEnumUnknown_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) +#define IEnumUnknown_AddRef(p) ICOM_CALL (AddRef,p) +#define IEnumUnknown_Release(p) ICOM_CALL (Release,p) +/*** IEnumUnknown methods ***/ +#define IEnumUnknown_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c) +#define IEnumUnknown_Skip(p,a) ICOM_CALL1(Skip,p,a) +#define IEnumUnknown_Reset(p) ICOM_CALL (Reset,p) +#define IEnumUnknown_Clone(p,a) ICOM_CALL1(Clone,p,a) +#endif /***************************************************************************** * IMallocSpy interface */ +#define ICOM_INTERFACE IMallocSpy +#define IMallocSpy_METHODS \ + ICOM_METHOD1 (ULONG,PreAlloc, ULONG,cbRequest); \ + ICOM_VMETHOD1( PostAlloc, void*,pActual); \ + ICOM_METHOD2 (void*,PreFree, void*,pRequest, BOOL32,fSpyed); \ + ICOM_VMETHOD1( PostFree, BOOL32,fSpyed); \ + ICOM_METHOD4 (ULONG,PreRealloc, void*,pRequest, ULONG,cbRequest, void**,ppNewRequest, BOOL32,fSpyed); \ + ICOM_METHOD2 (void*,PostRealloc, void*,pActual, BOOL32,fSpyed); \ + ICOM_METHOD2 (void*,PreGetSize, void*,pRequest, BOOL32,fSpyed); \ + ICOM_METHOD2 (ULONG,PostGetSize, ULONG,cbActual, BOOL32,fSpyed); \ + ICOM_METHOD2 (void*,PreDidAlloc, void*,pRequest, BOOL32,fSpyed); \ + ICOM_METHOD3 (int, PostDidAlloc, void*,pRequest, BOOL32,fSpyed, int,fActual); \ + ICOM_METHOD (int, PreHeapMinimize); \ + ICOM_METHOD (int, PostHeapMinimize); +#define IMallocSpy_IMETHODS \ + IUnknown_IMETHODS \ + IMallocSpy_METHODS +ICOM_DEFINE(IMallocSpy,IUnknown) +#undef ICOM_INTERFACE + +#ifdef ICOM_CINTERFACE +/*** IUnknown methods ***/ +#define IMallocSpy_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) +#define IMallocSpy_AddRef(p) ICOM_CALL (AddRef,p) +#define IMallocSpy_Release(p) ICOM_CALL (Release,p) +/*** IMallocSpy methods ***/ +#define IMallocSpy_PreAlloc(p,a) ICOM_CALL1(PreAlloc,p,a) +#define IMallocSpy_PostAlloc(p,a) ICOM_CALL1(PostAlloc,p,a) +#define IMallocSpy_PreFree(p,a,b) ICOM_CALL2(PreFree,p,a,b) +#define IMallocSpy_PostFree(p,a) ICOM_CALL1(PostFree,p,a) +#define IMallocSpy_PreRealloc(p,a,b,c,d) ICOM_CALL4(PreRealloc,p,a,b,c,d) +#define IMallocSpy_PostRealloc(p,a,b) ICOM_CALL2(PostRealloc,p,a,b) +#define IMallocSpy_PreGetSize(p,a,b) ICOM_CALL2(PreGetSize,p,a,b) +#define IMallocSpy_PostGetSize(p,a,b) ICOM_CALL2(PostGetSize,p,a,b) +#define IMallocSpy_PreDidAlloc(p,a,b) ICOM_CALL2(PreDidAlloc,p,a,b) +#define IMallocSpy_PostDidAlloc(p,a,b,c) ICOM_CALL3(PostDidAlloc,p,a,b,c) +#define IMallocSpy_PreHeapMinimize(p) ICOM_CALL (PreHeapMinimize,p) +#define IMallocSpy_PostHeapMinimize(p) ICOM_CALL (PostHeapMinimize,p) +#endif + /* FIXME: not implemented */ +HRESULT WINAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy); + +/* FIXME: not implemented */ +HRESULT WINAPI CoRevokeMallocSpy(void); + +HRESULT WINAPI CoFileTimeNow(FILETIME* lpFileTime); /***************************************************************************** * IMultiQI interface */ -/* FIXME: not implemented */ +typedef struct tagMULTI_QI +{ + const IID* pIID; + IUnknown* pItf; + HRESULT hr; +} MULTI_QI; + +#define ICOM_INTERFACE IMultiQI +#define IMultiQI_METHODS \ + ICOM_METHOD2(HRESULT,QueryMultipleInterfaces, ULONG,cMQIs, MULTI_QI*,pMQIs); +#define IMultiQI_IMETHODS \ + IUnknown_IMETHODS \ + IMultiQI_METHODS +ICOM_DEFINE(IMultiQI,IUnknown) +#undef ICOM_INTERFACE + +#ifdef ICOM_CINTERFACE +/*** IUnknown methods ***/ +#define IMultiQI_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) +#define IMultiQI_AddRef(p) ICOM_CALL (AddRef,p) +#define IMultiQI_Release(p) ICOM_CALL (Release,p) +/*** IMultiQI methods ***/ +#define IMultiQI_QueryMultipleInterfaces(p,a,b) ICOM_CALL2(QueryMultipleInterfaces,p,a,b) +#endif + + +/***************************************************************************** + * Additional API + */ + +DWORD WINAPI CoBuildVersion(void); + +DWORD WINAPI CoGetCurrentProcess(void); + +/* FIXME: unimplemented */ +HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew); + +/* FIXME: unimplemented */ +HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew); #endif /* __WINE_WINE_OBJ_MISC_H */