KSCOMDef.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  FileName    :   KSCOMDef.h
  4. //  Creater     :   Li Yu Xiong
  5. //  Date        :   2002-08-14 16:54:06
  6. //  Comment     :   
  7. //
  8. //////////////////////////////////////////////////////////////////////////////////////
  9. #ifndef _KSCOM_DEF_H_
  10. #define _KSCOM_DEF_H_
  11. #ifndef BEGIN_INTERFACE
  12. #ifdef __KS_VC_COMPATIBILITY_GCC__
  13. #ifndef BEGIN_INTERFACE
  14.    #define BEGIN_INTERFACE virtual void __KS_VC_COMPATIBILITY_GCC__a() {} virtual void __KS_VC_COMPATIBILITY_GCC__b() {}
  15. #endif
  16. #else   // __KAV_VC_COMP_GCC__
  17. #ifndef BEGIN_INTERFACE
  18.    #define BEGIN_INTERFACE
  19. #endif
  20. #endif  // __KAV_VC_COMP_GCC__
  21. #endif  // BEGIN_INTERFACE
  22. #ifdef  KSIDL_DEFINE
  23. #include "KSUnknown.h"
  24. #else   // not KSIDL_DEFINE
  25. #include "Unknwn.h"
  26. #define _VC_COMPLIER_   1
  27. #endif  // KSIDL_DEFINE
  28. #ifndef interface
  29. #define interface struct
  30. #endif // interface
  31. #include "assert.h"
  32. #include "KSCOMError.h"
  33. #ifndef USE_KSCOM
  34. #define USE_KSCOM
  35. #endif
  36. //interface IUnknown;
  37. #ifndef CALLTYPE_DEFINED
  38. #define CALLTYPE_DEFINED
  39. #ifdef  _VC_COMPLIER_
  40. #define KSCOMSTDMETHOD     __stdcall
  41. #define KSCOMFASTCALLMETHOD __fastcall
  42. #define KSCOMCDECLMETHOD __cdecl
  43. #elif   _GCC_COMPLIER_
  44. #define KSCOMSTDMETHOD          __attribute__ ((stdcall))
  45. #define KSCOMFASTCALLMETHOD
  46. #define KSCOMCDECLMETHOD
  47. #else   // NOT
  48. #define KSCOMSTDMETHOD
  49. #define KSCOMFASTCALLMETHOD
  50. #define KSCOMCDECLMETHOD
  51. #endif  // NOT
  52. #ifndef STDMETHODCALLTYPE
  53. #define STDMETHODCALLTYPE KSCOMSTDMETHOD
  54. #endif
  55. #endif  // CALLTYPE_DEFINED
  56. typedef void * KSCOMHANDLE;
  57. #ifndef ASSERT
  58. #define ASSERT assert
  59. #endif
  60.                                 
  61. #ifndef UUID_DEFINED
  62. #define UUID_DEFINED
  63. typedef struct _UUID {          // size is 16
  64.     unsigned int    Data1;
  65.     unsigned short  Data2;
  66.     unsigned short  Data3;
  67.     unsigned char   Data4[8];
  68. } UUID;
  69. #endif // !UUID_DEFINED
  70. inline int KSCOM_EQUAL_UUID(const UUID &cruuid1, const UUID &cruuid2)
  71. {
  72.     typedef int *PINT32;
  73.     return (
  74.         ((((PINT32)&cruuid1)[0]) == (((PINT32)&cruuid2)[0])) &&
  75.         ((((PINT32)&cruuid1)[1]) == (((PINT32)&cruuid2)[1])) &&
  76.         ((((PINT32)&cruuid1)[2]) == (((PINT32)&cruuid2)[2])) &&
  77.         ((((PINT32)&cruuid1)[3]) == (((PINT32)&cruuid2)[3]))
  78.     );
  79. }
  80. //inline int KSCOM_EQUAL_UUID(const UUID &cruuid1, const UUID &cruuid2)
  81. //{
  82. //    return !memcmp((void *)cruuid1, (void *)cruuid2, sizeof(UUID));
  83. //}
  84. // =========================================================================
  85. // *       KSCOM Client Registry and Initialization Function Definition    *
  86. // =========================================================================
  87. typedef KSCOMRESULT (KSCOMClientRegFun)(void);      
  88. typedef KSCOMRESULT (KSCOMClientUnRegFun)(void);
  89. typedef int (KSCOMClientInitFun)(void);
  90. typedef int (KSCOMClientUnInitFun)(void);
  91. typedef struct tagKSCOM_CLIENT_INIT{
  92.     int nRegFlag;                                   // Register Flag
  93.     KSCOMClientRegFun *pfKSCOMClientRegister;       // Register Function
  94.     KSCOMClientUnRegFun *pfKSCOMClientUnRegister;   // UnRegister Function
  95.     int nInitFlag;                                  // Initialize Flag
  96.     KSCOMClientInitFun *pfKSCOMClientInit;          // Initialize Function
  97.     KSCOMClientUnInitFun *pfKSCOMClientUnInit;      // UnInitialize Function
  98. } KSCOM_CLIENT_INIT;
  99. // =========================================================================
  100. // *        Kingsoft COM API Dynamic Load Module Export Function           *
  101. // =========================================================================
  102. #define KSCOM_GET_CLASS_OBJECT_FUNCTION_NAME "KSCOMGetClassObject"
  103. typedef KSCOMRESULT KSCOMSTDMETHOD TKSCOMGetClassObjectFunction(
  104.     const UUID &cruuidCLSID, const UUID &cruuidIID, void ** ppvClassObject
  105. );
  106. #define KS_SET_COM_OPERATOR_FUNCTION_NAME "KSSetCOMOperatorFunction"
  107. typedef int KSCOMSTDMETHOD TKSSetCOMOperatorFunction(
  108.     int nKSCOMOperatorFunctionNumber, void *pfnKSCOMOperatorFunctionTable[]
  109. );
  110. #define KSCOM_COMPONENT_INIT_FUNCTION_NAME "KSCOMComponentInit"
  111. typedef int KSCOMSTDMETHOD TKSCOMComponentInitFunction(void *pvContent);
  112. #define KSCOM_COMPONENT_UNINIT_FUNCTION_NAME "KSCOMComponentUnInit"
  113. typedef int KSCOMSTDMETHOD TKSCOMComponentUnInitFunction(void *pvContent);
  114. // =========================================================================
  115. // *               Kingsoft COM API Export Function Table                  *
  116. // =========================================================================
  117. extern "C"
  118. {
  119. const int nKSCOMExportFunctionNumber = 7;
  120. extern void *KSCOMExportFunctionTable[nKSCOMExportFunctionNumber];
  121. }
  122. // =========================================================================
  123. // *                  Kingsoft COM API Data Struct                         *
  124. // =========================================================================
  125. typedef enum _TKSCOM_REGISTER_CLASS_OBJECT_MODE
  126. {
  127.     REGISTER_COMPONENT_UNKNOWN  = 0,
  128.     REGISTER_COMPONENT_FILENAME = 1,
  129.     REGISTER_COMPONENT_BUFFER   = 2
  130. } TKSCOM_REGISTER_CLASS_OBJECT_MODE;
  131. // =========================================================================
  132. // *               Kingsoft COM API public implement                       *
  133. // =========================================================================
  134. extern "C"
  135. {
  136. KSCOMRESULT KSCOMSTDMETHOD 
  137. KSCoInitialize(void);
  138. KSCOMRESULT KSCOMSTDMETHOD 
  139. KSCoUnInitialize(void);
  140. KSCOMRESULT KSCOMSTDMETHOD 
  141. KSCoCreateInstance
  142. (
  143.     const UUID &cruuidCLSID, 
  144.     IUnknown   *pUnkOuter, 
  145.     const UUID &cruuidIID, 
  146.     void  **ppvObject
  147. );
  148. KSCOMRESULT KSCOMSTDMETHOD 
  149. KSCoGetClassObject
  150. (
  151.     const UUID &cruuidCLSID, 
  152.     const UUID &cruuidIID, 
  153.     void  **ppvClassObject
  154. );
  155. KSCOMRESULT KSCOMSTDMETHOD 
  156. KSCoRegisterClassObject
  157. (
  158.     const UUID &cruuidCLSID, 
  159.     const UUID &cruuidIID, 
  160.     IUnknown *pUnkInterface, 
  161.     KSCOMHANDLE *phRegister
  162. );
  163. KSCOMRESULT KSCOMSTDMETHOD
  164. KSCoUnRegisterClassObject
  165. (
  166.     KSCOMHANDLE hRegister
  167. );
  168. KSCOMRESULT KSCOMSTDMETHOD 
  169. KSCoRegisterComponent
  170. (
  171.     const UUID &cruuidCLSID, 
  172.     const UUID &cruuidIID, 
  173.     TKSCOM_REGISTER_CLASS_OBJECT_MODE RegisterMode,
  174.     int nClassObjectSize,
  175.     void *pvClassObject,
  176.     KSCOMHANDLE *phRegister
  177. );
  178. KSCOMRESULT KSCOMSTDMETHOD 
  179. KSCoUnRegisterComponent
  180. (
  181.     KSCOMHANDLE hRegister
  182. );
  183. KSCOMRESULT KSCOMSTDMETHOD
  184. KSCoFreeUnusedLibraries(void);
  185. // =========================================================================
  186. // Function for Running Object Table Object
  187. // =========================================================================
  188. KSCOMRESULT KSCOMSTDMETHOD
  189. KSGetActiveObject
  190. (
  191.     const UUID &cruuidCLSID,
  192.     IUnknown **ppUnkActiveObject
  193. );
  194. KSCOMRESULT KSCOMSTDMETHOD
  195. KSRegisterActiveObject
  196. (
  197.     IUnknown *pUnkActiveObject,             
  198.     const UUID &cruuidCLSID,
  199.     KSCOMHANDLE *phRegister
  200. );
  201. KSCOMRESULT KSCOMSTDMETHOD
  202. KSUnRegisterActiveObject
  203. (
  204.     KSCOMHANDLE hRegister
  205. );
  206. }   // extern "C"
  207. #endif // _KSCOM_DEF_H_