home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / netds / adsi / sampprov / cdispmgr.h < prev    next >
C/C++ Source or Header  |  1997-07-29  |  2KB  |  93 lines

  1. /*++
  2.  
  3. Copyright (c) 1996 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     CDispMgr.h
  8.  
  9. Abstract:
  10.  
  11. Author:
  12.  
  13. Environment:
  14.  
  15.     User mode
  16.  
  17. Revision History :
  18.  
  19. --*/
  20. #ifndef _CDISPMGR_H_
  21. #define _CDISPMGR_H_
  22.  
  23. typedef struct _typeinfoentry
  24. {
  25.     LONG TypeInfoId;
  26.     void FAR *ptypeinfo;
  27.     void * pInterfacePointer;
  28.     struct _typeinfoentry *pNext;
  29. } TYPEINFOENTRY, *PTYPEINFOENTRY;
  30.  
  31. class CDispatchMgr;
  32.  
  33. class CDispatchMgr
  34. {
  35. public:
  36.  
  37.     DECLARE_IDispatch_METHODS
  38.  
  39.     CDispatchMgr::CDispatchMgr();
  40.  
  41.     CDispatchMgr::~CDispatchMgr();
  42.  
  43.     DISPID
  44.     CDispatchMgr::getDISPID(DISPID InputDispId);
  45.  
  46.     DISPID
  47.     CDispatchMgr::getTypeinfoID(DISPID InputDispId);
  48.  
  49.     void *
  50.     CDispatchMgr::getInterfacePtr(DISPID TypeinfoID
  51.                                       );
  52.      void
  53.      CDispatchMgr::generate_newids(LONG TypeInfoId,
  54.              DISPID FAR* rgdispid, unsigned int cNames);
  55.  
  56.     PTYPEINFOENTRY
  57.     CDispatchMgr::FindTypeInfoEntry(LONG TypeInfoId);
  58.  
  59.     HRESULT
  60.     CDispatchMgr::AddTypeInfo(void FAR *ptypeinfo, void * pIntfptr);
  61.  
  62.  
  63.     STDMETHODIMP
  64.     CDispatchMgr::TypeInfoInvoke(DISPID dispidMember, REFIID iid, LCID lcid,
  65.             unsigned short wFlags, DISPPARAMS FAR* pdispparams,
  66.             VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo,
  67.             unsigned int FAR* puArgErr);
  68.  
  69.    HRESULT
  70.    CDispatchMgr::getTypeInfo(DISPID typeinfoid, ITypeInfo FAR * FAR * ppTypeInfo) ;
  71.  
  72.    HRESULT
  73.    CDispatchMgr::MarkAsNewEnum(void *pTypeInfo);
  74.  
  75.    PTYPEINFOENTRY
  76.    CDispatchMgr::FindTypeInfo(void *pTypeInfo);
  77.  
  78.    LONG
  79.    CDispatchMgr::gentypeinfoid();
  80.  
  81. protected:
  82.  
  83.     LONG        _dwTypeInfoId;
  84.     PTYPEINFOENTRY _pTypeInfoEntry;
  85.     PTYPEINFOENTRY _pDispidNewEnum;
  86. };
  87.  
  88. #define BAIL_IF_ERROR(hr) \
  89.         if (FAILED(hr)) {       \
  90.                 goto cleanup;   \
  91.         }
  92. #endif
  93.