⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comlib.h

📁 vxworks操作系统的源代码 供研究学习
💻 H
字号:
/* comLib.h - VxWorks COM public API *//* Copyright (c) 1998 Wind River Systems, Inc. *//*modification history--------------------02u,02jan02,nel  Fix alloca for diab build.02t,10dec01,dbs  diab build02s,08aug01,nel  Removed V_DECIMAL macros, not supported.02r,16jul01,dbs  correct definition of comLibInit func02q,13jul01,dbs  change vxcom back to vxidl02p,28jun01,dbs  move VxMutex to private header02o,27jun01,nel  Add extra SafeArray API.02n,21jun01,dbs  move some definitions to comCoreLib02m,20jun01,nel  Remove WindTypes and replace with vxcom.h.02l,08feb01,nel  SPR#63885. SAFEARRAYs added. 02k,30may00,nel  Add more variant support02j,02feb00,dbs  add some Variant-related APIs02i,22sep99,dbs  fix VARIANT type (moved to vxidl.idl)02h,20sep99,dbs  move main typedefs into vxidl.idl/.h02g,16sep99,dbs  add uchar typedef02f,01sep99,dbs  add more IDL types02e,18aug99,aim  fix GUID structure for SIMNT02d,05aug99,dbs  add byte typedef02c,30jul99,aim  changed mutex types to void*02b,30jul99,dbs  fix build issues on SIMNT02a,29jul99,dbs  add SIMNT support01z,28jul99,drm  Changing g_defaultServerPriority to g_defaultServerPriority.01y,27jul99,drm  Removing PS_CLNT_ASSIGNED enum entry.01x,16jul99,dbs  reverse T2OLE expression, remove need for USES_CONVERSION01w,10jun99,dbs  move vxdcom-private funcs out of here01v,04jun99,dbs  remove public registry APIs01u,03jun99,dbs  make mutex lock return void01t,03jun99,dbs  fix long long type for W3201s,02jun99,aim  #undef Free if it's defined01r,02jun99,dbs  use new OS-specific macros01q,20may99,dbs  add SysAllocStringByteLen() API01p,07may99,dbs  add PROTSEQ typedef01o,03may99,drm  adding priority scheme support01n,28apr99,dbs  remove COM_NO_WINDOWS_H01m,20apr99,dbs  add TLS defs for Win32, remove CoSetMalloc() API01l,14apr99,dbs  fix alloca() definition for Win3201k,14apr99,dbs  add definition for alloca() in gcc01j,31mar99,dbs  added SysAllocStringLen API01i,19mar99,drm  added CoCreateGuid() declaration01h,01mar99,dbs  add GUID_NULL definition01g,19feb99,dbs  add more wide-char support01f,11feb99,dbs  add CoSetMalloc API01e,04feb99,dbs  fix wide-char type for portability01d,03feb99,dbs  use STDMETHOD macros01c,20jan99,dbs  fix file names - vxcom becomes com01b,08jan99,dbs  add TLS functions01a,18dec98,dbs  created (from dcomLib.h)*//* DESCRIPTION: This file defines a working subset of the COM API (as defined by Microsoft) for support of plain COM in VxWorks. A slight difference from the MS implementation is that CoCreateInstance() only works for CLSCTX_INPROC servers, and CoCreateInstanceEx() must be used for CLSCTX_REMOTE servers. Also, CoGetClassObject() is only available when DCOM is included, and not under plain VXCOM.  */#ifndef __INCcomLib_h#define __INCcomLib_h#include <string.h>#include "vxidl.h"#include "comCoreLib.h"#include "semLib.h"#ifdef __cplusplusextern "C" {#endif    extern int g_defaultServerPriority;/* * The COM initialization type -- only COINIT_MULTITHREADED is * accepted by VxCOM / VxDCOM, the others are provided for Win32 * compatibility.*/typedef enum    {    COINIT_APARTMENTTHREADED = 0x2,  // apartment model - not supported    COINIT_MULTITHREADED     = 0x0,  // call objects on any thread.    COINIT_DISABLE_OLE1DDE   = 0x4,  // [don't use DDE for Ole1 support]    COINIT_SPEED_OVER_MEMORY = 0x8,  // [trade memory for speed?]    } COINIT;////////////////////////////////////////////////////////////////////////////// Public API Functions - these mimic the Win32 CoXxxx API calls.////////////////////////////////////////////////////////////////////////////STATUS comLibInit (void);HRESULT CoCreateInstance    (    REFCLSID		rclsid,		// CLSID of the object    IUnknown*		pUnkOuter,	// pointer to aggregating object    DWORD		dwClsContext,	// one of CLSCTX values    REFIID		riid,		// IID of desired interface    void**		ppv		// output interface ptr    );HRESULT CoInitialize (void*);HRESULT CoInitializeEx (void*, DWORD);void    CoUninitialize (void);DWORD CoGetCurrentProcess (void);void* CoTaskMemAlloc (ULONG cb); void* CoTaskMemRealloc (LPVOID pv, ULONG cb); void  CoTaskMemFree (LPVOID pv); HRESULT CoGetMalloc     (    DWORD               dwMemContext,   // private or shared    IMalloc**           ppMalloc        // output ptr    );HRESULT CoCreateGuid (GUID *pguid);BSTR SysAllocString (const OLECHAR*);BSTR SysAllocStringLen (const OLECHAR*, unsigned long);BSTR SysAllocStringByteLen (const char*, unsigned long);HRESULT SysFreeString (BSTR);DWORD SysStringLen (BSTR);DWORD SysStringByteLen (BSTR);int StringFromGUID2    (    REFGUID		rguid,		// IID to be converted    LPOLESTR		lpsz,		// resulting string    int			cbMax		// max size of returned string    );HRESULT StringFromCLSID    (    REFCLSID		rclsid,		// CLSID to be converted    LPOLESTR*		ppsz		// output var to receive string    );HRESULT StringFromIID    (    REFIID		riid,		// IID to be converted    LPOLESTR*		ppsz		// output var to receive string    );HRESULT CLSIDFromString    (    LPCOLESTR		lpsz,		// string representation of CLSID    LPCLSID		pclsid		// pointer to CLSID    );HRESULT IIDFromString    (    LPCOLESTR		lpsz,		// string representation of IID    LPIID		piid		// pointer to IID    );BOOL IsEqualGUID     (    REFGUID             guid1,    REFGUID             guid2    );BOOL IsEqualCLSID     (    REFCLSID            clsid1,    REFCLSID            clsid2    );BOOL IsEqualIID     (    REFIID              iid1,    REFIID              iid2    );HRESULT WriteClassStm    (    IStream *           pStm,           // IStream to store in    REFCLSID            rclsid          // CLSID to be stored in stream    );HRESULT ReadClassStm    (    IStream *           pStm,           // stream holding the CLSID    CLSID *             pclsid          // output CLSID    );#ifndef V_VT/* Variant access macros */#define V_VT(X)         ((X)->vt)#define V_ISARRAY(X)    (V_VT(X)&VT_ARRAY)#define V_UI1(X)         ((X)->bVal)#define V_I2(X)          ((X)->iVal)#define V_I4(X)          ((X)->lVal)#define V_R4(X)          ((X)->fltVal)#define V_R8(X)          ((X)->dblVal)#define V_CY(X)          ((X)->cyVal)#define V_DATE(X)        ((X)->date)#define V_BSTR(X)        ((X)->bstrVal)#define V_ERROR(X)       ((X)->scode)#define V_BOOL(X)        ((X)->boolVal)#define V_UNKNOWN(X)     ((X)->punkVal)#define V_ARRAY(X)       ((X)->parray)#define V_VARIANT(X)	 ((X)->pvarVal)#endif /* V_VT */void VariantInit (VARIANT* v);HRESULT VariantClear (VARIANT* v);HRESULT VariantCopy (VARIANT* d, VARIANT* s);HRESULT VariantChangeType (VARIANT * d,                                       VARIANT * s,                                       USHORT wFlags,                                       VARTYPE vt);SAFEARRAY * SafeArrayCreate    (     VARTYPE             vt,    UINT                cDims,    SAFEARRAYBOUND *    rgsabound    );HRESULT SafeArrayDestroy    (    SAFEARRAY *         psa    );HRESULT SafeArrayLock (SAFEARRAY * psa);HRESULT SafeArrayUnlock (SAFEARRAY * psa);HRESULT SafeArrayPutElement    (    SAFEARRAY *     psa,    long *          rgIndicies,    void *          pv    );HRESULT SafeArrayGetElement    (    SAFEARRAY *     psa,    long *          rgIndicies,    void *          pv    );HRESULT SafeArrayAccessData    (     SAFEARRAY *  psa,           void **  ppvData      );HRESULT SafeArrayUnaccessData    (     SAFEARRAY *  psa      );HRESULT SafeArrayCopy    (    SAFEARRAY *		psa,     SAFEARRAY **	ppsaOut     );HRESULT SafeArrayGetLBound    (    SAFEARRAY *		psa,     unsigned int	nDim,     long *		plLbound     );HRESULT SafeArrayGetUBound    (    SAFEARRAY *		psa,     unsigned int	nDim,     long *		plUbound    );  UINT SafeArrayGetDim    (     SAFEARRAY *		psa    );  UINT SafeArrayGetElemsize    (    SAFEARRAY *		psa    );HRESULT SafeArrayGetVartype    (     SAFEARRAY *		psa,     VARTYPE *		pvt      );const char* vxcomGUID2String (REFGUID guid);HRESULT comStreamCreate    (    const void*		pMem,		// raw memory block    unsigned long	len,		// length    IStream**		ppStream	// output stream-ptr    );int comWideToAscii    (    char*		result,		// resulting ascii string    const OLECHAR*	wstr,		// input wide-string    int			maxLen		// max length to convert    );int comAsciiToWide    (    OLECHAR*		result,		// resulting wide string    const char*		str,		// input string    int			maxLen		// max length to convert    );size_t comWideStrLen    (    const OLECHAR*	wsz		// wide string    );OLECHAR* comWideStrCopy    (    OLECHAR*		wszDst,		// destination    const OLECHAR*	wszSrc		// source    );HRESULT vxdcomClassRegister    (    REFCLSID		        clsid,		// key    PFN_GETCLASSOBJECT          pFnGCO,         // ptr to GetClassObject() fn    VXDCOMPRIORITYSCHEME        priorityScheme,	// priority scheme     int                         priority	// priority assoc. with scheme    );////////////////////////////////////////////////////////////////////////////// Inline ASCII/WIDE conversion macros a la ATL. Unlike ATL, a// function need not declare USES_CONVERSION at the top, but can// freely use the macros to do inline conversion of wide-to-ascii// (e.g. OLE2T(pwszSomeWideString)) or ascii-to-wide (e.g. T2OLE("some// ASCII text")) on any architecture. Currently, OLECHAR != wchar_t on// all VxWorks architectures, so use of Wide Literal Strings// (e.g. L"some wide text") is not recommended.//#ifdef __GNUC__# ifndef alloca#  define alloca __builtin_alloca# endif#elif defined(__DCC__)/* its a builtin for DCC */#else#include <malloc.h>#endif#ifndef USES_CONVERSION#define USES_CONVERSION#endifOLECHAR* comT2OLEHelper (void*,const char*);char*    comOLE2THelper (void*,const OLECHAR*);#define T2OLE(psz) \    ((psz) ? (comT2OLEHelper (alloca (sizeof (OLECHAR) * (strlen (psz) + 1)), \			      psz)) : 0)#define OLE2T(pwsz) \    ((pwsz) ? (comOLE2THelper(alloca (comWideStrLen (pwsz) + 1), pwsz)) : 0)#ifdef __cplusplus}#endif    #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -