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

VxWorks

开发平台:

C/C++

  1. /* dcomLib.h - VxWorks DCOM public API */
  2. /* Copyright (c) 1998 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01r,11oct01,nel  Add SCM Stack Size param to dcomLibInit.
  7. 01q,16jul01,dbs  fix up for plain C compilation, add definition of dcomLibInit
  8. 01p,12mar01,nel  SPR#62130. Add CoDisconectObject API def.
  9. 01o,20sep99,dbs  use vxidl.idl types
  10. 01n,09sep99,drm  Removing GUID_VXDCOM_EXTENT and VXDCOMEXTENT definitions from
  11.                  here as they've been moved to the new file dcomExtent.h
  12. 01m,21jul99,drm  Adding GUID and structure for the VxDCOM extent.
  13. 01l,24jun99,dbs  add authn APIs
  14. 01k,21apr99,dbs  add fwd decls of RPC interfaces
  15. 01j,21apr99,dbs  move IRpcChannelBuffer into its own privte header
  16. 01i,29jan99,dbs  simplify proxy/stub code
  17. 01h,20jan99,dbs  fix file names - vxcom becomes com
  18. 01g,22dec98,dbs  tidy up ORPC interface
  19. 01f,18dec98,dbs  move some stuff to vxcomLib.h
  20. 01e,14dec98,dbs  enhance RPCOLEMESSAGE struct, speed up GUID ops
  21. 01d,11dec98,dbs  remove need for COM_NO_WINDOWS_H flag
  22. 01c,11dec98,dbs  simplify registry
  23. 01b,26nov98,dbs  add IRemUnknown functionality
  24. 01a,17nov98,dbs  created
  25. */
  26. /*
  27. DESCRIPTION:
  28. This file defines a working subset of the COM API (as defined by
  29. Microsoft) for support of DCOM in VxWorks.
  30. */
  31. #ifndef __INCdcomLib_h
  32. #define __INCdcomLib_h
  33. #include "comLib.h"
  34. EXTERN_C const CLSID CLSID_StdMarshal;
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38. /*
  39.  * DCOM library initialisation/termination functions.
  40.  */
  41. STATUS dcomLibInit
  42.     (
  43.     int, /* BSTR policy */
  44.     int, /* DCOM Authentication level */
  45.     unsigned int, /* thread priority */
  46.     unsigned int, /* Static threads */
  47.     unsigned int, /* Dynamic threads */
  48.     unsigned int, /* Stack Size of server thread */
  49.     unsigned int, /* Stack Size of SCM thread */
  50.     int, /* Client Priority propogation */
  51.     int /* Object Exporter Port Number */
  52.     );
  53. void dcomLibTerm (void);
  54.     
  55. /*
  56.  * Public API Functions - these mimic the Win32 CoXxxx API calls,
  57.  * specifically those related to marshaling and interface remoting.
  58.  */
  59. HRESULT CoGetClassObject
  60.     (
  61.     REFCLSID rclsid, /* CLSID of class object */
  62.     DWORD dwClsContext, /* one of CLSCTX values */
  63.     COSERVERINFO* pServerInfo,    /* must be NULL */
  64.     REFIID riid, /* IID of desired interface */
  65.     void** ppv /* output interface pointer */
  66.     );
  67. HRESULT CoCreateInstanceEx
  68.     (
  69.     REFCLSID            rclsid,         /* CLSID of the object */
  70.     IUnknown*           punkOuter,      /* ptr to aggregating object */
  71.     DWORD               dwClsCtx,       /* one of CLSCTX values */
  72.     COSERVERINFO*       pServerInfo,    /* machine to create object on */
  73.     ULONG               cmq,            /* number of MULTI_QI structures */
  74.     MULTI_QI*           pResults        /* array of MULTI_QI structures */
  75.     );
  76. HRESULT CoRegisterClassObject
  77.     (
  78.     REFCLSID            rclsid,         /* CLSID to be registered */
  79.     IUnknown*           pUnk,           /* pointer to the class object */
  80.     DWORD               dwClsContext,   /* context from CLSCTX_XXX enum */
  81.     DWORD               flags,          /* how to connect to the class object */
  82.     DWORD*              lpdwRegister    /* returned token */
  83.     );
  84. HRESULT CoRevokeClassObject
  85.     (
  86.     DWORD               dwRegister      /* token for class object */
  87.     );
  88. HRESULT CoGetStandardMarshal
  89.     (
  90.     REFIID riid, /* interface IID */
  91.     IUnknown* pUnk, /* interface-ptr to be marshaled */
  92.     DWORD dwDestContext,  /* destination context */
  93.     void* pvDestContext,  /* reserved for future use */
  94.     DWORD mshlflags,      /* reason for marshaling */
  95.     IMarshal** ppMshl /* output ptr */
  96.     );
  97. HRESULT CoMarshalInterface
  98.     (
  99.     IStream* pStm, /* stream to marshal into */
  100.     REFIID riid, /* interface IID */
  101.     IUnknown* pUnk, /* interface-ptr to be marshaled */
  102.     DWORD dwDestContext,  /* destination context */
  103.     void* pvDestContext,  /* reserved for future use */
  104.     DWORD mshlflags       /* reason for marshaling */
  105.     );
  106. HRESULT CoUnmarshalInterface
  107.     (
  108.     IStream* pStm, /* stream containing interface */
  109.     REFIID riid, /* IID of the interface */
  110.     void** ppv /* output variable to receive ptr */
  111.     );
  112. HRESULT CoGetMarshalSizeMax
  113.     (
  114.     ULONG*              pulSize,        /* ptr to the upper-bound value */
  115.     REFIID              riid,           /* IID of interface */
  116.     IUnknown*           pUnk,           /* interface-ptr to be marshaled */
  117.     DWORD               dwDestContext,  /* destination process */
  118.     LPVOID              pvDestContext,  /* reserved for future use */
  119.     DWORD               mshlflags       /* reason for marshaling */
  120.     );
  121.  
  122. HRESULT CoReleaseMarshalData
  123.     (
  124.     IStream*            pStrm           /* stream to release */
  125.     );
  126. HRESULT CoDisconnectObject
  127.     (
  128.     IUnknown*           pUnk,           /* object to be disconnected */
  129.     DWORD               dwReserved      /* reserved for future use - MBZ */
  130.     );
  131. HRESULT CoGetPSClsid
  132.     (
  133.     REFIID              riid,           /* IID to use */
  134.     LPCLSID             pClsid          /* resulting P/S CLSID */
  135.     );
  136. #define RPC_C_AUTHN_LEVEL_DEFAULT 0
  137. #define RPC_C_AUTHN_LEVEL_NONE 1
  138. #define RPC_C_AUTHN_LEVEL_CONNECT 2
  139. #define RPC_C_AUTHN_LEVEL_CALL 3
  140. #define RPC_C_AUTHN_LEVEL_PKT 4
  141. #define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
  142. #define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
  143. #define RPC_C_AUTHN_NONE 0
  144. #define RPC_C_AUTHN_DCE_PRIVATE 1
  145. #define RPC_C_AUTHN_DCE_PUBLIC 2
  146. #define RPC_C_AUTHN_DEC_PUBLIC 4
  147. #define RPC_C_AUTHN_WINNT       10
  148. #define RPC_C_AUTHN_DEFAULT 0xFFFFFFFF
  149. #define RPC_C_IMP_LEVEL_DEFAULT      0
  150. #define RPC_C_IMP_LEVEL_ANONYMOUS    1
  151. #define RPC_C_IMP_LEVEL_IDENTIFY     2
  152. #define RPC_C_IMP_LEVEL_IMPERSONATE  3
  153. #define RPC_C_IMP_LEVEL_DELEGATE     4
  154. #define RPC_C_AUTHZ_NONE 0
  155. #define RPC_C_AUTHZ_NAME 1
  156. #define RPC_C_AUTHZ_DCE 2
  157. #define EOAC_NONE (0)
  158. /**************************************************************************
  159. *
  160. * vxdcomUserAdd -- add a user+password to VxDCOM
  161. *
  162. * This function adds a username, plus their password, to the VxDCOM
  163. * security service. This is used when an authentication level other 
  164. * than the default is required, the only valid level being
  165. * RPC_C_AUTHN_LEVEL_CONNECT.
  166. *
  167. * RETURNS: n/a
  168. */
  169. void vxdcomUserAdd
  170.     (
  171.     const char* userName,
  172.     const char* userPassword
  173.     );
  174. /**************************************************************************
  175. *
  176. * CoInitializeSecurity -- initialize the security service
  177. *
  178. * This function initializes the VxDCOM security service (only
  179. * NTLMSSP is supported by VxDCOM). The parameter 'dwAuthnLevel' sets
  180. * both the default incoming authentication level and the default
  181. * outgoing authentication level, and must be one of the
  182. * RPC_C_AUTHN_LEVEL_xxx constants. Incoming calls with less than this
  183. * level will be failed, outgoing calls will be made (by default) with
  184. * this level. The parameter 'dwImpLevel' sets the default
  185. * impersonation level for outgoing calls, and must be one of the
  186. * RPC_C_IMP_LEVEL_xxx constants.
  187. *
  188. * Calling CoCreateInstanceEx() with a non-NULL 'pServerInfo' parameter
  189. * will utilise the fields in the COSERVERINFO structure to determine
  190. * where the server is to be created. If the structure has a non-NULL
  191. * 'pAuthInfo' member, then the security settings in that structure
  192. * will override the default settings for the duration of that
  193. * activation request, and will be applied to the created proxy (if the
  194. * activation is successful). Valid settings for the COAUTHINFO
  195. * structure are described in its definition earlier in this file.
  196. *
  197. * RETURNS: an HRESULT value
  198. */
  199. HRESULT CoInitializeSecurity
  200.     (
  201.     void* psd, /* security descriptor - MBZ */
  202.     long cAuths, /* must be -1 */
  203.     void* asAuths, /* array of services - MBZ */
  204.     void* pReserved1, /* reserved - MBZ */
  205.     DWORD dwAuthnLevel, /* default authentication level  */
  206.     DWORD dwImpLevel, /* default impersonation level */
  207.     void* pAuthList, /* per-service info - MBZ */
  208.     DWORD dwcapabilities, /* capabilities - must be EOAC_NONE */
  209.     void* pReserved3 /* reserved - MBZ */
  210.     );
  211. #ifdef __cplusplus
  212. }
  213. #endif
  214. #endif /* __INCdcomLib_h */