com.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:2k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*
  2.  * Modified for use with MPlayer, detailed CVS changelog at
  3.  * http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
  4.  * $Id: a6472355d3dd6b6b269ed2b96051cda4d4fa2e9c $
  5.  */
  6. #ifndef AVIFILE_COM_H
  7. #define AVIFILE_COM_H
  8. #include "config.h"
  9. #ifdef HAVE_STDINT_H
  10. #include <stdint.h>
  11. #else
  12. #include <inttypes.h>
  13. #endif
  14. /**
  15.  * Internal functions and structures for COM emulation code.
  16.  */
  17. #if !defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. void* CoTaskMemAlloc(unsigned long cb);
  22. void CoTaskMemFree(void* cb);
  23. #ifndef GUID_TYPE
  24. #define GUID_TYPE
  25. typedef struct
  26. {
  27.     uint32_t f1;
  28.     uint16_t f2;
  29.     uint16_t f3;
  30.     uint8_t  f4[8];
  31. } GUID;
  32. #endif
  33. extern const GUID IID_IUnknown;
  34. extern const GUID IID_IClassFactory;
  35. typedef long (*GETCLASSOBJECT) (GUID* clsid, const GUID* iid, void** ppv);
  36. int RegisterComClass(const GUID* clsid, GETCLASSOBJECT gcs);
  37. int UnregisterComClass(const GUID* clsid, GETCLASSOBJECT gcs);
  38. #ifndef STDCALL
  39. #define STDCALL __attribute__((__stdcall__))
  40. #endif
  41. struct IUnknown;
  42. struct IClassFactory;
  43. struct IUnknown_vt
  44. {
  45.     long STDCALL (*QueryInterface)(struct IUnknown* _this, const GUID* iid, void** ppv);
  46.     long STDCALL (*AddRef)(struct IUnknown* _this) ;
  47.     long STDCALL (*Release)(struct IUnknown* _this) ;
  48. } ;
  49. typedef struct IUnknown
  50. {
  51.     struct IUnknown_vt* vt;
  52. } IUnknown;
  53. struct IClassFactory_vt
  54. {
  55.     long STDCALL (*QueryInterface)(struct IUnknown* _this, const GUID* iid, void** ppv);
  56.     long STDCALL (*AddRef)(struct IUnknown* _this) ;
  57.     long STDCALL (*Release)(struct IUnknown* _this) ;
  58.     long STDCALL (*CreateInstance)(struct IClassFactory* _this, struct IUnknown* pUnkOuter, const GUID* riid, void** ppvObject);
  59. };
  60. struct IClassFactory
  61. {
  62.     struct IClassFactory_vt* vt;
  63. };
  64. long CoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter,
  65.       long dwClsContext, const GUID* riid, void** ppv);
  66. #ifdef __cplusplus
  67. };
  68. #endif /* __cplusplus */
  69. #endif /* WIN32 */
  70. #endif /* AVIFILE_COM_H */