comCoreLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* comCoreLib.h - core COM definitions */
  2. /* Copyright (c) 2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01f,07aug01,dbs  return multiple interfaces during creation
  7. 01e,06aug01,dbs  add registry-show capability
  8. 01d,28jun01,dbs  add interlocked inc/dec funcs
  9. 01c,27jun01,dbs  add GUID string len definition
  10. 01b,22jun01,dbs  add const to args for comGuidCmp
  11. 01a,20jun01,dbs  created
  12. */
  13. #ifndef __INCcomCoreLib_h
  14. #define __INCcomCoreLib_h
  15. /* includes */
  16.     
  17. #include "comCoreTypes.h"               /* IDL-derived types */
  18. #include "comErr.h"                     /* error codes & macros */
  19.     
  20. #ifdef __cplusplus
  21. #include <string.h>
  22. inline bool operator < (const GUID& a, const GUID& b)
  23.     {
  24.     return (memcmp (&a, &b, sizeof (GUID)) < 0);
  25.     }
  26. inline bool operator == (const GUID& a, const GUID& b)
  27.     {
  28.     return (memcmp (&a, &b, sizeof (GUID)) == 0);
  29.     }
  30. inline bool operator != (const GUID& a, const GUID& b)
  31.     {
  32.     return ! (a == b);
  33.     }
  34. extern "C"
  35. {
  36. #endif
  37. /* defines */
  38. #define GUID_STRING_LEN 64
  39. /* types */
  40. typedef HRESULT (*PFN_GETCLASSOBJECT) (REFCLSID, REFIID, void**);
  41. typedef enum
  42.     {
  43.     PS_DEFAULT=0,                       /* use system default priority */
  44.     PS_SVR_ASSIGNED,                    /* use priority in reg. info */
  45.     PS_CLNT_PROPAGATED                  /* use priority from client */
  46.     } VXDCOMPRIORITYSCHEME;
  47. /* prototypes */
  48. STATUS comCoreLibInit (void);
  49. STATUS comCoreRegShow (void);
  50.     
  51. HRESULT comCoreGUID2String
  52.     (
  53.     const GUID *        pGuid,          /* GUID to print */
  54.     char *              buf             /* GUID_STRING_LEN */
  55.     );
  56.     
  57. HRESULT comInstanceCreate
  58.     (
  59.     REFCLSID            clsid,          /* class ID */
  60.     IUnknown *          pUnkOuter,      /* aggregating interface */
  61.     DWORD               dwClsCtx,       /* class context */
  62.     const char *        hint,           /* service hint */
  63.     ULONG               cMQIs,          /* number of MQIs */
  64.     MULTI_QI *          pMQIs           /* MQI array */
  65.     );
  66. HRESULT comClassObjectGet
  67.     (
  68.     REFCLSID            clsid,          /* class ID */
  69.     DWORD               dwClsCtx,       /* class context */
  70.     const char *        hint,           /* service hint */
  71.     REFIID              iid,            /* class-obj IID */
  72.     void **             ppvClsObj       /* resulting interface ptr */
  73.     );
  74. HRESULT comRegistryAdd
  75.     (
  76.     const char *        regName,        /* registry name */
  77.     DWORD               dwClsCtx,       /* class context */
  78.     IRegistry*          pReg            /* registry to add */
  79.     );
  80. HRESULT comClassRegister
  81.     (
  82.     REFCLSID         clsid, /* class ID */
  83.     DWORD               dwClsCtx,       /* class context */
  84.     PFN_GETCLASSOBJECT  pfnGCO,         /* GetClassObject() func */
  85.     VXDCOMPRIORITYSCHEME priScheme,     /* priority scheme */
  86.     int                 priority /* priority assoc. with scheme */
  87.     );
  88. BOOL comGuidCmp
  89.     (
  90.     const GUID *        a,              /* one GUID */
  91.     const GUID *        b               /* another GUID */
  92.     );
  93.     
  94. long comSafeInc
  95.     (
  96.     long *              pVar            /* variable to increment */
  97.     );
  98.     
  99. long comSafeDec
  100.     (
  101.     long *              pVar            /* variable to decrement */
  102.     );
  103.     
  104. #ifdef __cplusplus
  105. }
  106. #endif
  107. #endif /* __INCcomCoreLib_h */