Annotation of mstools/ole20/h/compobj.h, revision 1.1

1.1     ! root        1: // compobj.h - component object model definitions
        !             2: 
        !             3: #if !defined( _COMPOBJ_H_ )
        !             4: #define _COMPOBJ_H_
        !             5: 
        !             6: 
        !             7: /****** Linkage Definitions *************************************************/
        !             8: 
        !             9: /*
        !            10:  *      These are macros for declaring methods/functions.  They exist so that
        !            11:  *      control over the use of keywords (CDECL, PASCAL, __export,
        !            12:  *      extern "C") resides in one place, and because this is the least
        !            13:  *      intrusive way of writing function declarations that do not have
        !            14:  *      to be modified in order to port to the Mac.
        !            15:  *
        !            16:  *      The macros without the trailing underscore are for functions/methods
        !            17:  *      which a return value of type HRESULT; this is by far the most common
        !            18:  *      case in OLE. The macros with a trailing underscore take a return
        !            19:  *      type as a parameter.
        !            20:  *
        !            21:  * WARNING: STDAPI is hard coded into the LPFNGETCLASSOBJECT typedef below.
        !            22:  */
        !            23: 
        !            24: #ifdef __cplusplus
        !            25:     #define EXTERN_C    extern "C"
        !            26: #else
        !            27:     #define EXTERN_C    extern
        !            28: #endif
        !            29: 
        !            30: #ifdef _MAC
        !            31: #ifndef _MAC_H_
        !            32: #include <mac.h>
        !            33: #endif
        !            34: #define STDMETHODCALLTYPE
        !            35: #define STDAPICALLTYPE          pascal
        !            36: 
        !            37: #define STDAPI                  EXTERN_C STDAPICALLTYPE HRESULT
        !            38: #define STDAPI_(type)           EXTERN_C STDAPICALLTYPE type
        !            39: 
        !            40: #else   //  !_MAC
        !            41: 
        !            42: #ifdef WIN32
        !            43: #ifndef EXPORT
        !            44: #define EXPORT
        !            45: #endif
        !            46: 
        !            47: #define STDMETHODCALLTYPE       EXPORT __cdecl
        !            48: #define STDAPICALLTYPE          EXPORT __stdcall
        !            49: 
        !            50: #else
        !            51: #define EXPORT __export
        !            52: 
        !            53: #define STDMETHODCALLTYPE       EXPORT FAR CDECL
        !            54: #define STDAPICALLTYPE          EXPORT FAR PASCAL
        !            55: 
        !            56: #endif
        !            57: 
        !            58: #define STDAPI                  EXTERN_C HRESULT STDAPICALLTYPE
        !            59: #define STDAPI_(type)           EXTERN_C type STDAPICALLTYPE
        !            60: 
        !            61: #endif //!_MAC
        !            62: 
        !            63: #define STDMETHODIMP            HRESULT STDMETHODCALLTYPE
        !            64: #define STDMETHODIMP_(type)     type STDMETHODCALLTYPE
        !            65: 
        !            66: 
        !            67: /****** Interface Declaration ***********************************************/
        !            68: 
        !            69: /*
        !            70:  *      These are macros for declaring interfaces.  They exist so that
        !            71:  *      a single definition of the interface is simulataneously a proper
        !            72:  *      declaration of the interface structures (C++ abstract classes)
        !            73:  *      for both C and C++.
        !            74:  *
        !            75:  *      DECLARE_INTERFACE(iface) is used to declare an interface that does
        !            76:  *      not derive from a base interface.
        !            77:  *      DECLARE_INTERFACE_(iface, baseiface) is used to declare an interface
        !            78:  *      that does derive from a base interface.
        !            79:  *
        !            80:  *      By default if the source file has a .c extension the C version of
        !            81:  *      the interface declaratations will be expanded; if it has a .cpp
        !            82:  *      extension the C++ version will be expanded. if you want to force
        !            83:  *      the C version expansion even though the source file has a .cpp
        !            84:  *      extension, then define the macro "CINTERFACE".
        !            85:  *      eg.     cl -DCINTERFACE file.cpp
        !            86:  *
        !            87:  *      Example Interface declaration:
        !            88:  *
        !            89:  *          #undef  INTERFACE
        !            90:  *          #define INTERFACE   IClassFactory
        !            91:  *
        !            92:  *          DECLARE_INTERFACE_(IClassFactory, IUnknown)
        !            93:  *          {
        !            94:  *              // *** IUnknown methods ***
        !            95:  *              STDMETHOD(QueryInterface) (THIS_
        !            96:  *                                        REFIID riid,
        !            97:  *                                        LPVOID FAR* ppvObj) PURE;
        !            98:  *              STDMETHOD_(ULONG,AddRef) (THIS) PURE;
        !            99:  *              STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           100:  *
        !           101:  *              // *** IClassFactory methods ***
        !           102:  *              STDMETHOD(CreateInstance) (THIS_
        !           103:  *                                        LPUNKNOWN pUnkOuter,
        !           104:  *                                        REFIID riid,
        !           105:  *                                        LPVOID FAR* ppvObject) PURE;
        !           106:  *          };
        !           107:  *
        !           108:  *      Example C++ expansion:
        !           109:  *
        !           110:  *          struct FAR IClassFactory : public IUnknown
        !           111:  *          {
        !           112:  *              virtual HRESULT STDMETHODCALLTYPE QueryInterface(
        !           113:  *                                                  IID FAR& riid,
        !           114:  *                                                  LPVOID FAR* ppvObj) = 0;
        !           115:  *              virtual HRESULT STDMETHODCALLTYPE AddRef(void) = 0;
        !           116:  *              virtual HRESULT STDMETHODCALLTYPE Release(void) = 0;
        !           117:  *              virtual HRESULT STDMETHODCALLTYPE CreateInstance(
        !           118:  *                                              LPUNKNOWN pUnkOuter,
        !           119:  *                                              IID FAR& riid,
        !           120:  *                                              LPVOID FAR* ppvObject) = 0;
        !           121:  *          };
        !           122:  *
        !           123:  *          NOTE: Our documentation says '#define interface class' but we use
        !           124:  *          'struct' instead of 'class' to keep a lot of 'public:' lines
        !           125:  *          out of the interfaces.  The 'FAR' forces the 'this' pointers to
        !           126:  *          be far, which is what we need.
        !           127:  *
        !           128:  *      Example C expansion:
        !           129:  *
        !           130:  *          typedef struct IClassFactory
        !           131:  *          {
        !           132:  *              const struct IClassFactoryVtbl FAR* lpVtbl;
        !           133:  *          } IClassFactory;
        !           134:  *
        !           135:  *          typedef struct IClassFactoryVtbl IClassFactoryVtbl;
        !           136:  *
        !           137:  *          struct IClassFactoryVtbl
        !           138:  *          {
        !           139:  *              HRESULT (STDMETHODCALLTYPE * QueryInterface) (
        !           140:  *                                                  IClassFactory FAR* This,
        !           141:  *                                                  IID FAR* riid,
        !           142:  *                                                  LPVOID FAR* ppvObj) ;
        !           143:  *              HRESULT (STDMETHODCALLTYPE * AddRef) (IClassFactory FAR* This) ;
        !           144:  *              HRESULT (STDMETHODCALLTYPE * Release) (IClassFactory FAR* This) ;
        !           145:  *              HRESULT (STDMETHODCALLTYPE * CreateInstance) (
        !           146:  *                                                  IClassFactory FAR* This,
        !           147:  *                                                  LPUNKNOWN pUnkOuter,
        !           148:  *                                                  IID FAR* riid,
        !           149:  *                                                  LPVOID FAR* ppvObject);
        !           150:  *              HRESULT (STDMETHODCALLTYPE * LockServer) (
        !           151:  *                                                  IClassFactory FAR* This,
        !           152:  *                                                  BOOL fLock);
        !           153:  *          };
        !           154:  */
        !           155: 
        !           156: 
        !           157: #if defined(__cplusplus) && !defined(CINTERFACE)
        !           158: #ifdef __TURBOC__
        !           159: #define interface               struct huge
        !           160: #else
        !           161: #define interface               struct FAR
        !           162: #endif
        !           163: #define STDMETHOD(method)       virtual HRESULT STDMETHODCALLTYPE method
        !           164: #define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method
        !           165: #define PURE                    = 0
        !           166: #define THIS_
        !           167: #define THIS                    void
        !           168: #define DECLARE_INTERFACE(iface)    interface iface
        !           169: #define DECLARE_INTERFACE_(iface, baseiface)    interface iface : public baseiface
        !           170: 
        !           171: #else
        !           172: 
        !           173: #define interface               struct
        !           174: 
        !           175: #ifdef _MAC
        !           176: 
        !           177: #define STDMETHOD(method)       long    method##pad;\
        !           178:                                 HRESULT (STDMETHODCALLTYPE * method)
        !           179: #define STDMETHOD_(type,method) long    method##pad;\
        !           180:                                 type (STDMETHODCALLTYPE * method)
        !           181: 
        !           182: #else // _MAC
        !           183: 
        !           184: #define STDMETHOD(method)       HRESULT (STDMETHODCALLTYPE * method)
        !           185: #define STDMETHOD_(type,method) type (STDMETHODCALLTYPE * method)
        !           186: 
        !           187: #endif // !_MAC
        !           188: 
        !           189: #define PURE
        !           190: #define THIS_                   INTERFACE FAR* This,
        !           191: #define THIS                    INTERFACE FAR* This
        !           192: #ifdef CONST_VTABLE
        !           193: #define DECLARE_INTERFACE(iface)    typedef interface iface { \
        !           194:                                     const struct iface##Vtbl FAR* lpVtbl; \
        !           195:                                 } iface; \
        !           196:                                 typedef const struct iface##Vtbl iface##Vtbl; \
        !           197:                                 const struct iface##Vtbl
        !           198: #else
        !           199: #define DECLARE_INTERFACE(iface)    typedef interface iface { \
        !           200:                                     struct iface##Vtbl FAR* lpVtbl; \
        !           201:                                 } iface; \
        !           202:                                 typedef struct iface##Vtbl iface##Vtbl; \
        !           203:                                 struct iface##Vtbl
        !           204: #endif
        !           205: #define DECLARE_INTERFACE_(iface, baseiface)    DECLARE_INTERFACE(iface)
        !           206: 
        !           207: #endif
        !           208: 
        !           209: 
        !           210: /****** Additional basic types **********************************************/
        !           211: 
        !           212: 
        !           213: #ifndef FARSTRUCT
        !           214: #ifdef __cplusplus
        !           215: #define FARSTRUCT   FAR
        !           216: #else
        !           217: #define FARSTRUCT   
        !           218: #endif  // __cplusplus
        !           219: #endif  // FARSTRUCT
        !           220: 
        !           221: 
        !           222: #ifndef WINAPI          /* If not included with 3.1 headers... */
        !           223: 
        !           224: #ifdef WIN32
        !           225: #define FAR
        !           226: #define PASCAL          __stdcall
        !           227: #define CDECL           __cdecl
        !           228: #else
        !           229: #define FAR             _far
        !           230: #define PASCAL          _pascal
        !           231: #define CDECL           _cdecl
        !           232: #endif
        !           233: 
        !           234: #define VOID            void
        !           235: #define WINAPI      FAR PASCAL
        !           236: #define CALLBACK    FAR PASCAL
        !           237: 
        !           238: #ifndef FALSE
        !           239: #define FALSE 0
        !           240: #define TRUE 1
        !           241: #endif
        !           242: 
        !           243: typedef int BOOL;
        !           244: typedef unsigned char BYTE;
        !           245: typedef unsigned short WORD;
        !           246: typedef unsigned int UINT;
        !           247: 
        !           248: typedef long LONG;
        !           249: typedef unsigned long DWORD;
        !           250: 
        !           251: 
        !           252: typedef UINT WPARAM;
        !           253: typedef LONG LPARAM;
        !           254: typedef LONG LRESULT;
        !           255: 
        !           256: typedef unsigned int HANDLE;
        !           257: #define DECLARE_HANDLE(name)    typedef UINT name
        !           258: 
        !           259: DECLARE_HANDLE(HMODULE);
        !           260: DECLARE_HANDLE(HINSTANCE);
        !           261: DECLARE_HANDLE(HLOCAL);
        !           262: DECLARE_HANDLE(HGLOBAL);
        !           263: DECLARE_HANDLE(HDC);
        !           264: DECLARE_HANDLE(HRGN);
        !           265: DECLARE_HANDLE(HWND);
        !           266: DECLARE_HANDLE(HMENU);
        !           267: DECLARE_HANDLE(HACCEL);
        !           268: DECLARE_HANDLE(HTASK);
        !           269: 
        !           270: #ifndef NULL
        !           271: #define NULL 0
        !           272: #endif
        !           273: 
        !           274: 
        !           275: typedef void FAR *      LPVOID;
        !           276: typedef WORD FAR *      LPWORD;
        !           277: typedef DWORD FAR *     LPDWORD;
        !           278: typedef char FAR*       LPSTR;
        !           279: typedef const char FAR* LPCSTR;
        !           280: typedef void FAR*       LPLOGPALETTE;
        !           281: typedef void FAR*       LPMSG;
        !           282: //typedef struct tagMSG FAR *LPMSG;
        !           283: 
        !           284: typedef HANDLE FAR *LPHANDLE;
        !           285: typedef struct tagRECT FAR *LPRECT;
        !           286: 
        !           287: typedef struct FARSTRUCT tagSIZE
        !           288: {
        !           289:     int cx;
        !           290:     int cy;
        !           291: } SIZE;
        !           292: typedef SIZE*       PSIZE;
        !           293: 
        !           294: 
        !           295: #endif  /* WINAPI */
        !           296: 
        !           297: #ifndef OLE2SHIP
        !           298: #define OLE2SHIP
        !           299: #endif
        !           300: #ifndef OLE2SHIP
        !           301: #ifdef WIN32
        !           302: #define MAP16(v16)
        !           303: #define MAP32(v32) v32
        !           304: #define MAP1632(v16,v32)   v32
        !           305: #else
        !           306: #define MAP16(v16) v16
        !           307: #define MAP32(v32)
        !           308: #define MAP1632(v16,v32)   v16
        !           309: #endif
        !           310: #endif
        !           311: 
        !           312: typedef short SHORT;
        !           313: typedef unsigned short USHORT;
        !           314: typedef DWORD ULONG;
        !           315: 
        !           316: 
        !           317: #ifndef HUGEP
        !           318: #ifdef WIN32
        !           319: #define HUGEP
        !           320: #else
        !           321: #define HUGEP __huge
        !           322: #endif // WIN32
        !           323: #endif // HUGEP
        !           324: 
        !           325: #ifndef _MAC
        !           326: #ifndef WIN32
        !           327: typedef WORD WCHAR;
        !           328: #endif
        !           329: #else
        !           330: #include <stdlib.h>
        !           331: typedef wchar_t WCHAR;
        !           332: #endif
        !           333: 
        !           334: #ifndef WIN32
        !           335: typedef struct FARSTRUCT _LARGE_INTEGER {
        !           336:     DWORD LowPart;
        !           337:     LONG  HighPart;
        !           338: } LARGE_INTEGER, *PLARGE_INTEGER;
        !           339: #endif
        !           340: #define LISet32(li, v) ((li).HighPart = ((LONG)(v)) < 0 ? -1 : 0, (li).LowPart = (v))
        !           341: 
        !           342: #ifndef WIN32
        !           343: typedef struct FARSTRUCT _ULARGE_INTEGER {
        !           344:     DWORD LowPart;
        !           345:     DWORD HighPart;
        !           346: } ULARGE_INTEGER, *PULARGE_INTEGER;
        !           347: #endif
        !           348: #define ULISet32(li, v) ((li).HighPart = 0, (li).LowPart = (v))
        !           349: 
        !           350: #ifndef _WINDOWS_
        !           351: #ifndef _FILETIME_
        !           352: #define _FILETIME_
        !           353: typedef struct FARSTRUCT tagFILETIME
        !           354: {
        !           355:     DWORD dwLowDateTime;
        !           356:     DWORD dwHighDateTime;
        !           357: } FILETIME;
        !           358: #endif
        !           359: #endif
        !           360: 
        !           361: #ifdef WIN32
        !           362: #define HTASK DWORD
        !           363: #endif
        !           364: 
        !           365: #include "scode.h"
        !           366: 
        !           367: 
        !           368: 
        !           369: // *********************** Compobj errors **********************************
        !           370: 
        !           371: #define CO_E_NOTINITIALIZED         (CO_E_FIRST + 0x0)
        !           372: // CoInitialize has not been called and must be
        !           373: 
        !           374: #define CO_E_ALREADYINITIALIZED     (CO_E_FIRST + 0x1)
        !           375: // CoInitialize has already been called and cannot be called again (temporary)
        !           376: 
        !           377: #define CO_E_CANTDETERMINECLASS     (CO_E_FIRST + 0x2)
        !           378: // can't determine clsid (e.g., extension not in reg.dat)
        !           379: 
        !           380: #define CO_E_CLASSNOTREG            (CO_E_FIRST + 0x2)
        !           381: // clsid given is not registered (the extact missing piece depends upon the api)
        !           382: 
        !           383: #define CO_E_CLASSSTRING            (CO_E_FIRST + 0x3)
        !           384: // the string form of the clsid is invalid (including ole1 classes)
        !           385: 
        !           386: #define CO_E_IIDSTRING              (CO_E_FIRST + 0x4)
        !           387: // the string form of the iid is invalid
        !           388: 
        !           389: #define CO_E_APPNOTFOUND            (CO_E_FIRST + 0x5)
        !           390: // application not found
        !           391: 
        !           392: #define CO_E_APPSINGLEUSE           (CO_E_FIRST + 0x6)
        !           393: // application cannot be run more than once
        !           394: 
        !           395: #define CO_E_ERRORINAPP             (CO_E_FIRST + 0x7)
        !           396: // some error in the app program file
        !           397: 
        !           398: #define CO_E_DLLNOTFOUND            (CO_E_FIRST + 0x8)
        !           399: // dll not found
        !           400: 
        !           401: #define CO_E_ERRORINDLL             (CO_E_FIRST + 0x9)
        !           402: // some error in the dll file
        !           403: 
        !           404: #define CO_E_WRONGOSFORAPP          (CO_E_FIRST + 0xa)
        !           405: // app written for other version of OS or other OS altogether
        !           406: 
        !           407: #define CO_E_OBJNOTREG              (CO_E_FIRST + 0xb)
        !           408: // object is not registered
        !           409: 
        !           410: #define CO_E_OBJISREG               (CO_E_FIRST + 0xc)
        !           411: // object is already registered
        !           412: 
        !           413: #define CO_E_OBJNOTCONNECTED        (CO_E_FIRST + 0xd)
        !           414: // handler is not connected to server
        !           415: 
        !           416: #define CO_E_APPDIDNTREG            (CO_E_FIRST + 0xe)
        !           417: // app was launched, but didn't registered a class factory
        !           418: 
        !           419: // ********************* ClassObject errors ********************************
        !           420: 
        !           421: #define CLASS_E_NOAGGREGATION       (CLASSFACTORY_E_FIRST + 0x0)
        !           422: // class does not support aggregation (or class object is remote)
        !           423: 
        !           424: // *********************** Reg.dat errors **********************************
        !           425: 
        !           426: #define REGDB_E_READREGDB           (REGDB_E_FIRST + 0x0)
        !           427: // some error reading the registration database
        !           428: 
        !           429: #define REGDB_E_WRITEREGDB          (REGDB_E_FIRST + 0x1)
        !           430: // some error reading the registration database
        !           431: 
        !           432: #define REGDB_E_KEYMISSING          (REGDB_E_FIRST + 0x2)
        !           433: // some error reading the registration database
        !           434: 
        !           435: #define REGDB_E_INVALIDVALUE        (REGDB_E_FIRST + 0x3)
        !           436: // some error reading the registration database
        !           437: 
        !           438: #define REGDB_E_CLASSNOTREG         (REGDB_E_FIRST + 0x4)
        !           439: // some error reading the registration database
        !           440: 
        !           441: #define REGDB_E_IIDNOTREG           (REGDB_E_FIRST + 0x5)
        !           442: // some error reading the registration database
        !           443: 
        !           444: // *************************** RPC errors **********************************
        !           445: 
        !           446: #define RPC_E_FIRST    MAKE_SCODE(SEVERITY_ERROR, FACILITY_RPC,  0x000)
        !           447: 
        !           448: // call was rejected by callee, either by MF::HandleIncomingCall or
        !           449: #define RPC_E_CALL_REJECTED             (RPC_E_FIRST + 0x1)
        !           450: 
        !           451: // call was canceld by call - returned by MessagePending
        !           452: // this code only occurs if MessagePending return cancel
        !           453: #define RPC_E_CALL_CANCELED             (RPC_E_FIRST + 0x2)
        !           454: 
        !           455: // the caller is dispatching an intertask SendMessage call and
        !           456: // can NOT call out via PostMessage
        !           457: #define RPC_E_CANTPOST_INSENDCALL       (RPC_E_FIRST + 0x3)
        !           458: 
        !           459: // the caller is dispatching an asynchronus call can NOT
        !           460: // make an outgoing call on behalf of this call
        !           461: #define RPC_E_CANTCALLOUT_INASYNCCALL   (RPC_E_FIRST + 0x4)
        !           462: 
        !           463: // the caller is not in a state where an outgoing call can be made
        !           464: // this is the case if the caller has an outstandig call and
        !           465: // another incoming call was excepted by HIC; now the caller is
        !           466: // not allowed to call out again
        !           467: #define RPC_E_CANTCALLOUT_INEXTERNALCALL (RPC_E_FIRST + 0x5)
        !           468: 
        !           469: // the connection terminated or is in a bogus state
        !           470: // and can not be used any more. Other connections
        !           471: // are still valid.
        !           472: #define RPC_E_CONNECTION_TERMINATED     (RPC_E_FIRST + 0x6)
        !           473: 
        !           474: // the callee (server [not server application]) is not available
        !           475: // and disappeared; all connections are invalid
        !           476: #ifdef OLE2SHIP
        !           477: #define RPC_E_SERVER_DIED               (RPC_E_FIRST + 0x7)
        !           478: #else
        !           479: #define RPC_E_SERVER_DIED               (RPC_E_FIRST + 0x3)
        !           480: #endif
        !           481: 
        !           482: // the caller (client ) disappeared while the callee (server) was
        !           483: // processing a call
        !           484: #define RPC_E_CLIENT_DIED               (RPC_E_FIRST + 0x8)
        !           485: 
        !           486: // the date paket with the marshalled parameter data is
        !           487: // incorrect
        !           488: #define RPC_E_INVALID_DATAPACKET        (RPC_E_FIRST + 0x9)
        !           489: 
        !           490: // the call was not transmitted properly; the message queue
        !           491: // was full and was not emptied after yielding
        !           492: #define RPC_E_CANTTRANSMIT_CALL         (RPC_E_FIRST + 0xa)
        !           493: 
        !           494: // the client (caller) can not marshall the parameter data
        !           495: // or unmarshall the return data - low memory etc.
        !           496: #define RPC_E_CLIENT_CANTMARSHAL_DATA   (RPC_E_FIRST + 0xb)
        !           497: #define RPC_E_CLIENT_CANTUNMARSHAL_DATA (RPC_E_FIRST + 0xc)
        !           498: 
        !           499: // the server (caller) can not unmarshall the parameter data
        !           500: // or marshall the return data - low memory
        !           501: #define RPC_E_SERVER_CANTMARSHAL_DATA   (RPC_E_FIRST + 0xd)
        !           502: #define RPC_E_SERVER_CANTUNMARSHAL_DATA (RPC_E_FIRST + 0xe)
        !           503: 
        !           504: // received data are invalid; can be server or
        !           505: // client data
        !           506: #define RPC_E_INVALID_DATA              (RPC_E_FIRST + 0xf)
        !           507: 
        !           508: // a particular parameter is invalid and can not be un/marshalled
        !           509: #define RPC_E_INVALID_PARAMETER         (RPC_E_FIRST + 0x10)
        !           510: 
        !           511: // a internal error occured
        !           512: #define RPC_E_UNEXPECTED                (RPC_E_FIRST + 0xFFFF)
        !           513: 
        !           514: 
        !           515: /****** Globally Unique Ids *************************************************/
        !           516: 
        !           517: #ifndef GUID_DEFINED
        !           518: #define GUID_DEFINED
        !           519: typedef struct FARSTRUCT _GUID
        !           520: {
        !           521:     DWORD Data1;
        !           522:     WORD  Data2;
        !           523:     WORD  Data3;
        !           524:     BYTE  Data4[8];
        !           525: } GUID;
        !           526: #endif
        !           527: 
        !           528: #ifdef __cplusplus
        !           529: 
        !           530: struct FARSTRUCT _COGUID: _GUID
        !           531: {
        !           532:     BOOL operator==(const _COGUID FAR& guidOther) const
        !           533: #ifdef WIN32
        !           534:         { return !memcmp(&Data1,&guidOther.Data1,sizeof(_COGUID)); }
        !           535: #else        
        !           536:         { return !_fmemcmp(&Data1,&guidOther.Data1,sizeof(_COGUID)); }
        !           537: #endif
        !           538: 
        !           539:     BOOL operator!=(const _COGUID FAR& guidOther) const
        !           540:         { return !((*this) == guidOther); }
        !           541: 
        !           542:     _COGUID() {}
        !           543:     _COGUID(const GUID guidOther) { *this = *((_COGUID FAR*) &guidOther); }
        !           544: };
        !           545: 
        !           546: inline BOOL operator==(const GUID FAR& guid, const _COGUID FAR& guidOther)
        !           547:     { return (*((_COGUID FAR*) &guid) == guidOther); }
        !           548: 
        !           549: inline BOOL operator!=(const GUID FAR& guid, const _COGUID FAR& guidOther)
        !           550:     { return (*((_COGUID FAR*) &guid) != guidOther); }
        !           551: 
        !           552: #else
        !           553: typedef GUID _COGUID;
        !           554: #endif
        !           555: typedef GUID FAR* LPGUID;
        !           556: 
        !           557: 
        !           558: // macros to define byte pattern for a GUID.  
        !           559: //      Example: DEFINE_GUID(GUID_XXX, a, b, c, ...);
        !           560: //
        !           561: // Each dll/exe must initialize the GUIDs once.  This is done in one of
        !           562: // two ways.  If you are not using precompiled headers for the file(s) which
        !           563: // initializes the GUIDs, define INITGUID before including compobj.h.  This
        !           564: // is how OLE builds the initialized versions of the GUIDs which are included
        !           565: // in ole2.lib.  The GUIDs in ole2.lib are all defined in the same text 
        !           566: // segment GUID_TEXT.
        !           567: //
        !           568: // The alternative (which some versions of the compiler don't handle properly;
        !           569: // they wind up with the initialized GUIDs in a data, not a text segment),
        !           570: // is to use a precompiled version of compobj.h and then include initguid.h 
        !           571: // after compobj.h followed by one or more of the guid defintion files.
        !           572: 
        !           573: 
        !           574: #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        !           575:     EXTERN_C const _COGUID CDECL FAR name
        !           576: 
        !           577: #ifdef INITGUID
        !           578: #include "initguid.h"
        !           579: #endif
        !           580: 
        !           581: #define DEFINE_OLEGUID(name, l, w1, w2) \
        !           582:     DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
        !           583: 
        !           584: 
        !           585: // Interface ID are just a kind of GUID
        !           586: typedef GUID    IID;
        !           587: typedef LPGUID   LPIID;
        !           588: #define IID_NULL GUID_NULL
        !           589: #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
        !           590: 
        !           591: 
        !           592: // Class ID are just a kind of GUID
        !           593: typedef GUID         CLSID;
        !           594: typedef LPGUID       LPCLSID;
        !           595: #define CLSID_NULL   GUID_NULL
        !           596: #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
        !           597: 
        !           598: 
        !           599: #if defined(__cplusplus)
        !           600: #define REFGUID             const _COGUID FAR&
        !           601: #define REFIID              const _COGUID FAR&
        !           602: #define REFCLSID            const _COGUID FAR&
        !           603: #else
        !           604: #define REFGUID             const _COGUID FAR*
        !           605: #define REFIID              const _COGUID FAR*
        !           606: #define REFCLSID            const _COGUID FAR*
        !           607: #endif
        !           608: 
        !           609: #ifndef INITGUID
        !           610: #include "coguid.h"
        !           611: #endif
        !           612: 
        !           613: 
        !           614: /****** Other value types ***************************************************/
        !           615: 
        !           616: // memory context values; passed to CoGetMalloc
        !           617: typedef enum tagMEMCTX
        !           618: {
        !           619:     MEMCTX_TASK = 1,            // task (private) memory
        !           620:     MEMCTX_SHARED = 2,          // shared memory (between processes)
        !           621: #ifdef _MAC
        !           622:     MEMCTX_MACSYSTEM = 3,       // on the mac, the system heap
        !           623: #endif 
        !           624: 
        !           625:     // these are mostly for internal use...
        !           626:     MEMCTX_UNKNOWN = -1,        // unknown context (when asked about it)
        !           627:     MEMCTX_SAME = -2,           // same context (as some other pointer)
        !           628: } MEMCTX;
        !           629: 
        !           630: 
        !           631: 
        !           632: // class context: used to determine what scope and kind of class object to use
        !           633: // NOTE: this is a bitwise enum
        !           634: typedef enum tagCLSCTX
        !           635: {
        !           636:     CLSCTX_INPROC_SERVER = 1,   // server dll (runs in same process as caller)
        !           637:     CLSCTX_INPROC_HANDLER = 2,  // handler dll (runs in same process as caller)
        !           638:     CLSCTX_LOCAL_SERVER = 4     // server exe (runs on same machine; diff proc)
        !           639: } CLSCTX;
        !           640: 
        !           641: #define CLSCTX_ALL              (CLSCTX_INPROC_SERVER| \
        !           642:                                  CLSCTX_INPROC_HANDLER| \
        !           643:                                  CLSCTX_LOCAL_SERVER)
        !           644: 
        !           645: #define CLSCTX_INPROC           (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
        !           646: 
        !           647: #define CLSCTX_SERVER           (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER)
        !           648: 
        !           649: 
        !           650: // class registration flags; passed to CoRegisterClassObject
        !           651: typedef enum tagREGCLS
        !           652: {
        !           653:     REGCLS_SINGLEUSE = 0,       // class object only generates one instance
        !           654:     REGCLS_MULTIPLEUSE = 1      // same class object genereates multiple inst.
        !           655: } REGCLS;
        !           656: 
        !           657: 
        !           658: // interface marshaling definitions
        !           659: #define MARSHALINTERFACE_MIN 40 // minimum number of bytes for interface marshl
        !           660: 
        !           661: // marshaling flags; passed to CoMarshalInterface
        !           662: typedef enum tagMSHLFLAGS
        !           663: {
        !           664:     MSHLFLAGS_NORMAL = 0,       // normal marshaling via proxy/stub
        !           665:     MSHLFLAGS_TABLESTRONG = 1,  // keep object alive; must explicitly release
        !           666:     MSHLFLAGS_TABLEWEAK = 2     // doesn't hold object alive; still must release
        !           667: } MSHLFLAGS;
        !           668: 
        !           669: // marshal context: determines the destination context of the marshal operation
        !           670: typedef enum tagMSHCTX
        !           671: {
        !           672:     MSHCTX_LOCAL = 0,           // unmarshal context is local (eg.shared memory)
        !           673:     MSHCTX_NOSHAREDMEM = 1,     // unmarshal context has no shared memory access
        !           674: } MSHCTX;
        !           675: 
        !           676: 
        !           677: // call type used by IMessageFilter::HandleIncommingMessage
        !           678: typedef enum tagCALLTYPE
        !           679: {
        !           680:     CALLTYPE_TOPLEVEL = 1,      // toplevel call - no outgoing call 
        !           681:     CALLTYPE_NESTED   = 2,      // callback on behalf of previous outgoing call - should always handle
        !           682:     CALLTYPE_ASYNC    = 3,      // aysnchronous call - can NOT be rejected
        !           683:     CALLTYPE_TOPLEVEL_CALLPENDING = 4,  // new toplevel call with new LID
        !           684:     CALLTYPE_ASYNC_CALLPENDING    = 5   // async call - can NOT be rejected
        !           685: } CALLTYPE;
        !           686: 
        !           687: // status of server call - returned by IMessageFilter::HandleIncommingCall
        !           688: // and passed to  IMessageFilter::RetryRejectedCall
        !           689: typedef enum tagSERVERCALL
        !           690: {
        !           691:     SERVERCALL_ISHANDLED    = 0,
        !           692:     SERVERCALL_REJECTED     = 1,
        !           693:     SERVERCALL_RETRYLATER   = 2         
        !           694: } SERVERCALL;
        !           695: 
        !           696: 
        !           697: // Pending type indicates the level of nesting
        !           698: typedef enum tagPENDINGTYPE
        !           699: {   
        !           700:     PENDINGTYPE_TOPLEVEL = 1,       // toplevel call
        !           701:     PENDINGTYPE_NESTED   = 2,       // nested call
        !           702: } PENDINGTYPE;
        !           703: 
        !           704: // return values of MessagePending
        !           705: typedef enum tagPENDINGMSG
        !           706: {   
        !           707:     PENDINGMSG_CANCELCALL  = 0, // cancel the outgoing call
        !           708:     PENDINGMSG_WAITNOPROCESS  = 1, // wait for the return and don't dispatch the message
        !           709:     PENDINGMSG_WAITDEFPROCESS = 2  // wait and dispatch the message 
        !           710:     
        !           711: } PENDINGMSG;
        !           712: 
        !           713: 
        !           714: /****** IUnknown Interface **************************************************/
        !           715: 
        !           716: 
        !           717: 
        !           718: #undef  INTERFACE
        !           719: #define INTERFACE   IUnknown
        !           720: 
        !           721: DECLARE_INTERFACE(IUnknown)
        !           722: {
        !           723:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           724:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           725:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           726: };
        !           727: 
        !           728: typedef        IUnknown FAR* LPUNKNOWN;
        !           729: 
        !           730: /****** Class Factory Interface *******************************************/
        !           731: 
        !           732: 
        !           733: #undef  INTERFACE
        !           734: #define INTERFACE   IClassFactory
        !           735: 
        !           736: DECLARE_INTERFACE_(IClassFactory, IUnknown)
        !           737: {
        !           738:     // *** IUnknown methods ***
        !           739:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           740:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           741:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           742: 
        !           743:     // *** IClassFactory methods ***
        !           744:     STDMETHOD(CreateInstance) (THIS_ LPUNKNOWN pUnkOuter,
        !           745:                               REFIID riid,
        !           746:                               LPVOID FAR* ppvObject) PURE;
        !           747:     STDMETHOD(LockServer) (THIS_ BOOL fLock) PURE;
        !           748: 
        !           749: };
        !           750: 
        !           751: typedef       IClassFactory FAR* LPCLASSFACTORY;
        !           752: 
        !           753: 
        !           754: /****** Memory Allocation Interface ***************************************/
        !           755: 
        !           756: 
        !           757: #undef  INTERFACE
        !           758: #define INTERFACE   IMalloc
        !           759: 
        !           760: DECLARE_INTERFACE_(IMalloc, IUnknown)
        !           761: {
        !           762:     // *** IUnknown methods ***
        !           763:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           764:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           765:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           766: 
        !           767:     // *** IMalloc methods ***
        !           768:     STDMETHOD_(void FAR*, Alloc) (THIS_ ULONG cb) PURE;
        !           769:     STDMETHOD_(void FAR*, Realloc) (THIS_ void FAR* pv, ULONG cb) PURE;
        !           770:     STDMETHOD_(void, Free) (THIS_ void FAR* pv) PURE;
        !           771:     STDMETHOD_(ULONG, GetSize) (THIS_ void FAR* pv) PURE;
        !           772:     STDMETHOD_(int, DidAlloc) (THIS_ void FAR* pv) PURE;
        !           773:     STDMETHOD_(void, HeapMinimize) (THIS) PURE;
        !           774: };
        !           775: typedef       IMalloc FAR* LPMALLOC;
        !           776: 
        !           777: 
        !           778: /****** IMarshal Interface ************************************************/
        !           779: 
        !           780: // forward declaration for IStream; must include storage.h later to use
        !           781: #ifdef __cplusplus
        !           782: interface IStream;
        !           783: #else
        !           784: typedef interface IStream IStream;
        !           785: #endif
        !           786: typedef         IStream FAR* LPSTREAM;
        !           787: 
        !           788: 
        !           789: #undef  INTERFACE
        !           790: #define INTERFACE   IMarshal
        !           791: 
        !           792: DECLARE_INTERFACE_(IMarshal, IUnknown)
        !           793: {
        !           794:     // *** IUnknown methods ***
        !           795:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           796:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           797:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           798: 
        !           799:     // *** IMarshal methods ***
        !           800:     STDMETHOD(GetUnmarshalClass)(THIS_ REFIID riid, LPVOID pv, 
        !           801:                         DWORD dwDestContext, LPVOID pvDestContext,
        !           802:                         DWORD mshlflags, LPCLSID pCid) PURE;
        !           803:     STDMETHOD(GetMarshalSizeMax)(THIS_ REFIID riid, LPVOID pv, 
        !           804:                         DWORD dwDestContext, LPVOID pvDestContext,
        !           805:                         DWORD mshlflags, LPDWORD pSize) PURE;
        !           806:     STDMETHOD(MarshalInterface)(THIS_ LPSTREAM pStm, REFIID riid,
        !           807:                         LPVOID pv, DWORD dwDestContext, LPVOID pvDestContext,
        !           808:                         DWORD mshlflags) PURE;
        !           809:     STDMETHOD(UnmarshalInterface)(THIS_ LPSTREAM pStm, REFIID riid,
        !           810:                         LPVOID FAR* ppv) PURE;
        !           811:     STDMETHOD(ReleaseMarshalData)(THIS_ LPSTREAM pStm) PURE;
        !           812:     STDMETHOD(DisconnectObject)(THIS_ DWORD dwReserved) PURE;
        !           813: };
        !           814: typedef         IMarshal FAR* LPMARSHAL;
        !           815: 
        !           816: 
        !           817: #undef  INTERFACE
        !           818: #define INTERFACE   IStdMarshalInfo
        !           819: 
        !           820: DECLARE_INTERFACE_(IStdMarshalInfo, IUnknown)
        !           821: {
        !           822:     // *** IUnknown methods ***
        !           823:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           824:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           825:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           826: 
        !           827:     // *** IStdMarshalInfo methods ***
        !           828:     STDMETHOD(GetClassForHandler)(THIS_ DWORD dwDestContext, 
        !           829:                         LPVOID pvDestContext, LPCLSID pClsid) PURE;
        !           830: };
        !           831: typedef         IStdMarshalInfo FAR* LPSTDMARSHALINFO;
        !           832: 
        !           833: 
        !           834: /****** Message Filter Interface *******************************************/
        !           835: 
        !           836: 
        !           837: #undef  INTERFACE
        !           838: #define INTERFACE   IMessageFilter
        !           839: 
        !           840: DECLARE_INTERFACE_(IMessageFilter, IUnknown)
        !           841: {
        !           842:     // *** IUnknown methods ***
        !           843:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           844:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           845:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           846: 
        !           847:     // *** IMessageFilter methods ***
        !           848:     STDMETHOD_(DWORD, HandleInComingCall) (THIS_ DWORD dwCallType,
        !           849:                                 HTASK htaskCaller, DWORD dwTickCount,
        !           850:                                 DWORD dwReserved ) PURE;
        !           851: #ifdef OLE2SHIP
        !           852:     STDMETHOD_(DWORD, RetryRejectedCall) (THIS_
        !           853: #else
        !           854:     STDMETHOD_(DWORD, RetryRejectedMessage) (THIS_
        !           855: #endif
        !           856:                                 HTASK htaskCallee, DWORD dwTickCount,
        !           857:                                 DWORD dwRejectType ) PURE;
        !           858:     STDMETHOD_(DWORD, MessagePending) (THIS_ 
        !           859:                                 HTASK htaskCallee, DWORD dwTickCount, 
        !           860:                                 DWORD dwPendingType  ) PURE; 
        !           861: };
        !           862: typedef       IMessageFilter FAR* LPMESSAGEFILTER;
        !           863: 
        !           864: 
        !           865: /****** Enumerator Interfaces *********************************************/
        !           866: 
        !           867: /*
        !           868:  *  Since we don't use parametrized types, we put in explicit declarations
        !           869:  *  of the enumerators we need.
        !           870:  */
        !           871: 
        !           872: 
        !           873: #undef  INTERFACE
        !           874: #define INTERFACE   IEnumString
        !           875: 
        !           876: DECLARE_INTERFACE_(IEnumString, IUnknown)
        !           877: {
        !           878:     // *** IUnknown methods ***
        !           879:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           880:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           881:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           882: 
        !           883:     // *** IEnumString methods ***
        !           884:     STDMETHOD(Next) (THIS_ ULONG celt, 
        !           885:                        LPSTR FAR* rgelt, 
        !           886:                        ULONG FAR* pceltFetched) PURE;
        !           887:     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
        !           888:     STDMETHOD(Reset) (THIS) PURE;
        !           889:     STDMETHOD(Clone) (THIS_ IEnumString FAR* FAR* ppenm) PURE;
        !           890: };
        !           891: typedef      IEnumString FAR* LPENUMSTRING;
        !           892: 
        !           893: 
        !           894: #undef  INTERFACE
        !           895: #define INTERFACE   IEnumUnknown
        !           896: 
        !           897: DECLARE_INTERFACE_(IEnumUnknown, IUnknown)
        !           898: {
        !           899:     // *** IUnknown methods ***
        !           900:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           901:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           902:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           903: 
        !           904:     // *** IEnumUnknown methods ***
        !           905:     STDMETHOD(Next) (THIS_ ULONG celt, LPUNKNOWN FAR* rgelt, ULONG FAR* pceltFetched) PURE;
        !           906:     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
        !           907:     STDMETHOD(Reset) (THIS) PURE;
        !           908:     STDMETHOD(Clone) (THIS_ IEnumUnknown FAR* FAR* ppenm) PURE;
        !           909: };
        !           910: typedef         IEnumUnknown FAR* LPENUMUNKNOWN;
        !           911: 
        !           912: 
        !           913: /****** STD Object API Prototypes *****************************************/
        !           914: 
        !           915: STDAPI_(DWORD) CoBuildVersion( VOID );
        !           916: STDAPI_(LPSTR) CoBuildVersionEx( VOID );
        !           917: 
        !           918: /* init/uninit */
        !           919: 
        !           920: STDAPI  CoInitialize(LPMALLOC pMalloc);
        !           921: STDAPI_(void)  CoUninitialize(void);
        !           922: STDAPI  CoGetMalloc(DWORD dwMemContext, LPMALLOC FAR* ppMalloc);
        !           923: STDAPI_(DWORD) CoGetCurrentProcess(void);
        !           924: 
        !           925: 
        !           926: /* register/revoke/get class objects */
        !           927: 
        !           928: STDAPI  CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved,
        !           929:                     REFIID riid, LPVOID FAR* ppv);
        !           930: STDAPI  CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk,
        !           931:                     DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister);
        !           932: STDAPI  CoRevokeClassObject(DWORD dwRegister);
        !           933: 
        !           934: 
        !           935: /* marshaling interface pointers */
        !           936: 
        !           937: STDAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk,
        !           938:                     DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
        !           939: STDAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID FAR* ppv);
        !           940: STDAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult);
        !           941: STDAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT FAR * phresult);
        !           942: STDAPI CoReleaseMarshalData(LPSTREAM pStm);
        !           943: STDAPI CoDisconnectObject(LPUNKNOWN pUnk, DWORD dwReserved);
        !           944: STDAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases);
        !           945: STDAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk,
        !           946:                     DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags,
        !           947:                     LPMARSHAL FAR* ppMarshal);
        !           948: 
        !           949: 
        !           950: /* dll loading helpers; keeps track of ref counts and unloads all on exit */
        !           951: 
        !           952: STDAPI_(HINSTANCE) CoLoadLibrary(LPSTR lpszLibName, BOOL bAutoFree);
        !           953: STDAPI_(void) CoFreeLibrary(HINSTANCE hInst);
        !           954: STDAPI_(void) CoFreeAllLibraries(void);
        !           955: STDAPI_(void) CoFreeUnusedLibraries(void);
        !           956: 
        !           957: 
        !           958: /* helper for creating instances */
        !           959: 
        !           960: STDAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter,
        !           961:                     DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv);
        !           962: 
        !           963: 
        !           964: /* other helpers */
        !           965: 
        !           966: STDAPI_(BOOL) IsEqualGUID(REFGUID rguid1, REFGUID rguid2);
        !           967: STDAPI StringFromCLSID(REFCLSID rclsid, LPSTR FAR* lplpsz);
        !           968: STDAPI CLSIDFromString(LPSTR lpsz, LPCLSID pclsid);
        !           969: STDAPI StringFromIID(REFIID rclsid, LPSTR FAR* lplpsz);
        !           970: STDAPI IIDFromString(LPSTR lpsz, LPIID lpiid);
        !           971: STDAPI_(BOOL) CoIsOle1Class(REFCLSID rclsid);
        !           972: STDAPI ProgIDFromCLSID (REFCLSID clsid, LPSTR FAR* lplpszProgID);
        !           973: STDAPI CLSIDFromProgID (LPCSTR lpszProgID, LPCLSID lpclsid);
        !           974: 
        !           975: 
        !           976: STDAPI_(BOOL) CoFileTimeToDosDateTime(
        !           977:                  FILETIME FAR* lpFileTime, LPWORD lpDosDate, LPWORD lpDosTime);
        !           978: STDAPI_(BOOL) CoDosDateTimeToFileTime(
        !           979:                        WORD nDosDate, WORD nDosTime, FILETIME FAR* lpFileTime);
        !           980: STDAPI  CoFileTimeNow( FILETIME FAR* lpFileTime );
        !           981: 
        !           982: 
        !           983: STDAPI CoRegisterMessageFilter( LPMESSAGEFILTER lpMessageFilter,
        !           984:                                 LPMESSAGEFILTER FAR* lplpMessageFilter );
        !           985: 
        !           986: 
        !           987: /* TreatAs APIS */
        !           988: 
        !           989: STDAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew);
        !           990: STDAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew);
        !           991: 
        !           992: 
        !           993: /* the server dlls must define their DllGetClassObject and DllCanUnloadNow
        !           994:  * to match these; the typedefs are located here to ensure all are changed at 
        !           995:  * the same time.
        !           996:  */
        !           997: 
        !           998: STDAPI  DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID FAR* ppv);
        !           999: #ifdef _MAC
        !          1000: typedef STDAPICALLTYPE HRESULT (FAR* LPFNGETCLASSOBJECT) (REFCLSID, REFIID, LPVOID FAR*);
        !          1001: #else
        !          1002: typedef HRESULT (STDAPICALLTYPE FAR* LPFNGETCLASSOBJECT) (REFCLSID, REFIID, LPVOID FAR*);
        !          1003: #endif
        !          1004: 
        !          1005: 
        !          1006: STDAPI  DllCanUnloadNow(void);
        !          1007: #ifdef _MAC
        !          1008: typedef STDAPICALLTYPE HRESULT (FAR* LPFNCANUNLOADNOW)(void);
        !          1009: #else
        !          1010: typedef HRESULT (STDAPICALLTYPE FAR* LPFNCANUNLOADNOW)(void);
        !          1011: #endif
        !          1012: 
        !          1013: 
        !          1014: /****** Debugging Helpers *************************************************/
        !          1015: 
        !          1016: #ifdef _DEBUG
        !          1017: // writes to the debug port and displays a message box
        !          1018: STDAPI FnAssert(LPSTR lpstrExpr, LPSTR lpstrMsg, LPSTR lpstrFileName, UINT iLine);
        !          1019: #endif  //  _DEBUG
        !          1020: 
        !          1021: 
        !          1022: #ifndef OLE2SHIP
        !          1023: 
        !          1024: #define CO_E_READREGDB              (CO_E_FIRST + 0x5)
        !          1025: #define CO_E_WRITEREGDB             (CO_E_FIRST + 0x6)
        !          1026: #define RPC_E_DDE_FIRST    MAKE_SCODE(SEVERITY_ERROR, FACILITY_RPC,  0x100)
        !          1027: #define RPC_E_DDE_BUSY              (RPC_E_DDE_FIRST + 0x0)
        !          1028: #define RPC_E_DDE_CANT_UPDATE       (RPC_E_DDE_FIRST + 0x1)
        !          1029: #define RPC_E_DDE_INIT              (RPC_E_DDE_FIRST + 0x2)
        !          1030: #define RPC_E_DDE_NACK              (RPC_E_DDE_FIRST + 0x3)
        !          1031: #define RPC_E_DDE_LAUNCH            (RPC_E_DDE_FIRST + 0x4)
        !          1032: #define RPC_E_DDE_POST              (RPC_E_DDE_FIRST + 0x5)
        !          1033: #define RPC_E_DDE_PROTOCOL          (RPC_E_DDE_FIRST + 0x6)
        !          1034: #define RPC_E_DDE_REVOKE            (RPC_E_DDE_FIRST + 0x7)
        !          1035: #define RPC_E_DDE_SYNTAX_EXECUTE    (RPC_E_DDE_FIRST + 0x8)
        !          1036: #define RPC_E_DDE_SYNTAX_ITEM       (RPC_E_DDE_FIRST + 0x9)
        !          1037: #define RPC_E_DDE_UNEXP_MSG     (RPC_E_DDE_FIRST + 0xa)
        !          1038: #define RPC_E_DDE_DATA              (RPC_E_DDE_FIRST + 0xb)
        !          1039: #define RPC_E_BUSY                      (RPC_E_FIRST + 0x0)
        !          1040: #define RPC_E_MSG_REJECTED              (RPC_E_FIRST + 0x1)
        !          1041: 
        !          1042: #endif
        !          1043: 
        !          1044: #endif // _COMPOBJ_H_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.