comRegistry.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* comRegistry.h - COM core registry for in-memory coclasses */
  2. /* Copyright (c) 2001, Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,07aug01,dbs  return multiple interfaces during creation
  7. 01c,06aug01,dbs  add registry-show capability, remove C++ impl
  8. 01b,13jul01,dbs  fix warnings on IUnknown methods
  9. 01a,20jun01,dbs  written
  10. */
  11. /*
  12. DESCRIPTION
  13. This class implements the IRegistry interface, providing a registry
  14. for in-memory coclasses, i.e. those already in the program image.
  15. Thus, it is vital that this registry is registered with comCoreLib
  16. prior to any external coclasses trying to use it.
  17. */
  18. #ifndef __INCcomRegistry_h
  19. #define __INCcomRegistry_h
  20. #include <semLib.h>
  21. #include "comCoreTypes.h"               /* base types */
  22. #include "comCoreLib.h"                 /* core COM funcs */
  23. EXTERN_C int comRegistryInit (void);
  24. /*
  25.  * COM_REG_ENTRY - each registry entry is kept in a structure like
  26.  * this, and they are linked together in a list held by the registry
  27.  * object.
  28.  */
  29. typedef struct _comRegEntry
  30.     {
  31.     struct _comRegEntry *pNext;         /* list linkage */
  32.     CLSID               clsid;          /* class ID */
  33.     PFN_GETCLASSOBJECT  pfnGCO;         /* ptr to GCO func */
  34.     } COM_REG_ENTRY;
  35. /*
  36.  * COM_REG_CLASS - the actual registry implementation class is defined
  37.  * by this structure, which implements the IRegistry interface.
  38.  */
  39. typedef struct _comRegClass
  40.     {
  41.     const IRegistryVtbl *lpVtbl;        /* vptr in C++ terms */
  42.     DWORD               dwRefCount;     /* reference counter */
  43.     COM_REG_ENTRY *     pEntries;       /* list of reg entries */
  44.     } COM_REG_CLASS;
  45. /* IUnknown implementation */
  46. HRESULT comRegistry_QueryInterface
  47.     (
  48.     IUnknown *          pThis,
  49.     REFIID              riid,
  50.     void**              ppvObject
  51.     );
  52. ULONG comRegistry_AddRef
  53.     (
  54.     IUnknown *          pThis
  55.     );
  56. ULONG comRegistry_Release
  57.     (
  58.     IUnknown *          pThis
  59.     );
  60. /* IRegistry implementation */
  61. HRESULT comRegistry_RegisterClass
  62.     (
  63.     IRegistry *         pThis,
  64.     REFCLSID            clsid,
  65.     void*               pfnGetClassObject
  66.     );
  67. HRESULT comRegistry_IsClassRegistered
  68.     (
  69.     IRegistry *         pThis,
  70.     REFCLSID            clsid
  71.     );
  72. HRESULT comRegistry_CreateInstance
  73.     (
  74.     IRegistry *         pThis,
  75.     REFCLSID            clsid,
  76.     IUnknown*           pUnkOuter,
  77.     DWORD               dwClsContext,
  78.     const char*         hint,
  79.     ULONG               cMQIs,
  80.     MULTI_QI *          pMQIs
  81.     );
  82. HRESULT comRegistry_GetClassObject
  83.     (
  84.     IRegistry *         pThis,
  85.     REFCLSID            clsid,
  86.     REFIID              iid,
  87.     DWORD               dwClsContext,
  88.     const char*         hint,
  89.     IUnknown**          ppClsObj
  90.     );
  91. HRESULT comRegistry_GetClassID
  92.     (
  93.     IRegistry *         pThis,
  94.     DWORD               dwIndex,
  95.     LPCLSID             pclsid
  96.     );
  97. #endif /* __INCcomRegistry_h */