// Copyright 1995-1997 Microsoft Corporation. All Rights Reserved. #if _MSC_VER > 1000 #pragma once #endif #ifndef _IPSERVER_H_ #define _IPSERVER_H_ #include //#include #include // for offsetof() #include //=--------------------------------------------------------------------------= // we don't want to use the CRTs, and would like some memory tracking in the // debug case, so we'll override these guys //=--------------------------------------------------------------------------= void * _cdecl operator new(size_t size); void _cdecl operator delete(void *ptr); //=--------------------------------------------------------------------------= // Useful macros //=--------------------------------------------------------------------------= #define RETURN_ON_FAILURE(hr) if (FAILED(hr)) return hr #define RETURN_ON_NULLALLOC(ptr) if (!(ptr)) return E_OUTOFMEMORY #define CLEANUP_ON_FAILURE(hr) if (FAILED(hr)) goto CleanUp #define CLEARERRORINFORET(hr) { SetErrorInfo(0, NULL); return hr; } #define CLEARERRORINFORET_ON_FAILURE(hr) if (FAILED(hr)) { SetErrorInfo(0, NULL); return hr; } #define CLEANUP_ON_ERROR(l) if (l != ERROR_SUCCESS) goto CleanUp // conversions #define BOOL_TO_VARIANTBOOL(f) (f) ? VARIANT_TRUE : VARIANT_FALSE // Reference counting help. #define RELEASE_OBJECT(ptr) if (ptr) { IUnknown *pUnk = (ptr); (ptr) = NULL; pUnk->Release(); } #define QUICK_RELEASE(ptr) if (ptr) ((IUnknown *)ptr)->Release(); #define ADDREF_OBJECT(ptr) if (ptr) (ptr)->AddRef() //=--------------------------------------------------------------------------= // QueryInterface Optimizations //=--------------------------------------------------------------------------= // for optimizing QI's // #define DO_GUIDS_MATCH(riid1, riid2) ((riid1.Data1 == riid2.Data1) && (riid1 == riid2)) // Data1_* // // the first dword of GUIDs for most of the interesting interfaces. these are // used by speed critical versions of QueryInterface #define Data1_IAdviseSink 0x0000010f #define Data1_IAdviseSink2 0x00000125 #define Data1_IAdviseSinkEx 0x3af24290 #define Data1_IBindCtx 0x0000000e #define Data1_ICDataDoc 0xF413E4C0 #define Data1_IClassFactory 0x00000001 #define Data1_IClassFactory2 0xb196b28f #define Data1_IConnectionPoint 0xb196b286 #define Data1_IConnectionPointContainer 0xb196b284 #define Data1_IControl_95 0x9a4bbfb5 #define Data1_IControl 0xa7fddba0 #define Data1_ICreateErrorInfo 0x22f03340 #define Data1_ICreateTypeInfo 0x00020405 #define Data1_ICreateTypeLib 0x00020406 #define Data1_IDataAdviseHolder 0x00000110 #define Data1_IDataFrame 0x97F254E0 #define Data1_IDataFrameExpert 0x73687490 #define Data1_IDataObject 0x0000010e #define Data1_IDispatch 0x00020400 #define Data1_IDropSource 0x00000121 #define Data1_IDropTarget 0x00000122 #define Data1_IEnumCallback 0x00000108 #define Data1_IEnumConnectionPoints 0xb196b285 #define Data1_IEnumConnections 0xb196b287 #define Data1_IEnumFORMATETC 0x00000103 #define Data1_IEnumGeneric 0x00000106 #define Data1_IEnumHolder 0x00000107 #define Data1_IEnumMoniker 0x00000102 #define Data1_IEnumOLEVERB 0x00000104 #define Data1_IEnumSTATDATA 0x00000105 #define Data1_IEnumSTATSTG 0x0000000d #define Data1_IEnumString 0x00000101 #define Data1_IEnumOleUndoActions 0xb3e7c340 #define Data1_IEnumUnknown 0x00000100 #define Data1_IEnumVARIANT 0x00020404 #define Data1_IErrorInfo 0x1cf2b120 #define Data1_IExternalConnection 0x00000019 #define Data1_IFont 0xbef6e002 #define Data1_IFontDisp 0xbef6e003 #define Data1_IFormExpert 0x5aac7f70 #define Data1_IGangConnectWithDefault 0x6d5140c0 #define Data1_IInternalMoniker 0x00000011 #define Data1_ILockBytes 0x0000000a #define Data1_IMalloc 0x00000002 #define Data1_IMarshal 0x00000003 #define Data1_IMessageFilter 0x00000016 #define Data1_IMoniker 0x0000000f #define Data1_IMsoCommandTarget 0xb722bccb #define Data1_IMsoDocument 0xb722bcc5 #define Data1_IOleInPlaceComponent 0x5efc7970 #define Data1_IMsoView 0xb722bcc6 #define Data1_IOleAdviseHolder 0x00000111 #define Data1_IOleCache 0x0000011e #define Data1_IOleCache2 0x00000128 #define Data1_IOleCacheControl 0x00000129 #define Data1_IOleClientSite 0x00000118 #define Data1_IOleCompoundUndoAction 0xa1faf330 #define Data1_IOleContainer 0x0000011b #define Data1_IOleControl 0xb196b288 #define Data1_IOleControlSite 0xb196b289 #define Data1_IOleInPlaceActiveObject 0x00000117 #define Data1_IOleInPlaceFrame 0x00000116 #define Data1_IOleInPlaceObject 0x00000113 #define Data1_IOleInPlaceObjectWindowless 0x1c2056cc #define Data1_IOleInPlaceSite 0x00000119 #define Data1_IOleInPlaceSiteEx 0x9c2cad80 #define Data1_IOleInPlaceSiteWindowless 0x922eada0 #define Data1_IOleInPlaceUIWindow 0x00000115 #define Data1_IOleItemContainer 0x0000011c #define Data1_IOleLink 0x0000011d #define Data1_IOleManager 0x0000011f #define Data1_IOleObject 0x00000112 #define Data1_IOlePresObj 0x00000120 #define Data1_IOlePropertyFrame 0xb83bb801 #define Data1_IOleStandardTool 0xd97877c4 #define Data1_IOleUndoAction 0x894ad3b0 #define Data1_IOleUndoActionManager 0xd001f200 #define Data1_IOleWindow 0x00000114 #define Data1_IPSFactory 0x00000009 #define Data1_IPSFactoryBuffer 0xd5f569d0 #define Data1_IParseDisplayName 0x0000011a #define Data1_IPerPropertyBrowsing 0x376bd3aa #define Data1_IPersist 0x0000010c #define Data1_IPersistFile 0x0000010b #define Data1_IPersistPropertyBag 0x37D84F60 #define Data1_IPersistStorage 0x0000010a #define Data1_IPersistStream 0x00000109 #define Data1_IPersistStreamInit 0x7fd52380 #define Data1_IPicture 0x7bf80980 #define Data1_IPictureDisp 0x7bf80981 #define Data1_IPointerInactive 0x55980ba0 #define Data1_IPropertyNotifySink 0x9bfbbc02 #define Data1_IPropertyPage 0xb196b28d #define Data1_IPropertyPage2 0x01e44665 #define Data1_IPropertyPage3 0xb83bb803 #define Data1_IPropertyPageInPlace 0xb83bb802 #define Data1_IPropertyPageSite 0xb196b28c #define Data1_IPropertyPageSite2 0xb83bb804 #define Data1_IProvideClassInfo 0xb196b283 #define Data1_IProvideDynamicClassInfo 0x6d5140d1 #define Data1_IQuickActivate 0xcf51ed10 #define Data1_IRequireClasses 0x6d5140d0 #define Data1_IRootStorage 0x00000012 #define Data1_IRunnableObject 0x00000126 #define Data1_IRunningObjectTable 0x00000010 #define Data1_ISelectionContainer 0x6d5140c6 #define Data1_IServiceProvider 0x6d5140c1 #define Data1_ISimpleFrameSite 0x742b0e01 #define Data1_ISpecifyPropertyPages 0xb196b28b #define Data1_IStdMarshalInfo 0x00000018 #define Data1_IStorage 0x0000000b #define Data1_IStream 0x0000000c #define Data1_ISupportErrorInfo 0xdf0b3d60 #define Data1_ITypeComp 0x00020403 #define Data1_ITypeInfo 0x00020401 #define Data1_ITypeLib 0x00020402 #define Data1_IUnknown 0x00000000 #define Data1_IViewObject 0x0000010d #define Data1_IViewObject2 0x00000127 #define Data1_IViewObjectEx 0x3af24292 #define Data1_IWeakRef 0x0000001a #define Data1_ICategorizeProperties 0x4d07fc10 #define QI_INHERITS(pObj, itf) \ case Data1_##itf: \ if(DO_GUIDS_MATCH(riid, IID_##itf)) \ { \ *ppvObjOut = (void *)(itf *)pObj; \ } \ break; #endif // _IPSERVER_H_