1 // Common/MyGuidDef.h 2 3 #ifndef GUID_DEFINED 4 #define GUID_DEFINED 5 6 #include "MyTypes.h" 7 8 typedef struct { 9 UInt32 Data1; 10 UInt16 Data2; 11 UInt16 Data3; 12 unsigned char Data4[8]; 13 } GUID; 14 15 #ifdef __cplusplus 16 #define REFGUID const GUID & 17 #else 18 #define REFGUID const GUID * 19 #endif 20 21 #define REFCLSID REFGUID 22 #define REFIID REFGUID 23 24 #ifdef __cplusplus 25 inline int operator==(REFGUID g1, REFGUID g2) 26 { 27 for (int i = 0; i < (int)sizeof(g1); i++) 28 if (((unsigned char *)&g1)[i] != ((unsigned char *)&g2)[i]) 29 return 0; 30 return 1; 31 } 32 inline int operator!=(REFGUID g1, REFGUID g2) { return !(g1 == g2); } 33 #endif 34 35 #ifdef __cplusplus 36 #define MY_EXTERN_C extern "C" 37 #else 38 #define MY_EXTERN_C extern 39 #endif 40 41 #endif 42 43 44 #ifdef DEFINE_GUID 45 #undef DEFINE_GUID 46 #endif 47 48 #ifdef INITGUID 49 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ 50 MY_EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } 51 #else 52 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ 53 MY_EXTERN_C const GUID name 54 #endif 55