diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/oleauto/ole | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/oleauto/ole')
-rw-r--r-- | private/oleauto/ole/win16/cobjps.h | 69 | ||||
-rw-r--r-- | private/oleauto/ole/win16/coguid.h | 65 | ||||
-rw-r--r-- | private/oleauto/ole/win16/compobj.h | 1031 | ||||
-rw-r--r-- | private/oleauto/ole/win16/dvobj.h | 480 | ||||
-rw-r--r-- | private/oleauto/ole/win16/initguid.h | 38 | ||||
-rw-r--r-- | private/oleauto/ole/win16/moniker.h | 248 | ||||
-rw-r--r-- | private/oleauto/ole/win16/ole1cls.h | 141 | ||||
-rw-r--r-- | private/oleauto/ole/win16/ole2.h | 1336 | ||||
-rw-r--r-- | private/oleauto/ole/win16/ole2.reg | 460 | ||||
-rw-r--r-- | private/oleauto/ole/win16/ole2dbg.h | 19 | ||||
-rw-r--r-- | private/oleauto/ole/win16/ole2ver.h | 5 | ||||
-rw-r--r-- | private/oleauto/ole/win16/oleguid.h | 80 | ||||
-rw-r--r-- | private/oleauto/ole/win16/scode.h | 283 | ||||
-rw-r--r-- | private/oleauto/ole/win16/storage.h | 457 |
14 files changed, 4712 insertions, 0 deletions
diff --git a/private/oleauto/ole/win16/cobjps.h b/private/oleauto/ole/win16/cobjps.h new file mode 100644 index 000000000..ff0359005 --- /dev/null +++ b/private/oleauto/ole/win16/cobjps.h @@ -0,0 +1,69 @@ +/*****************************************************************************\ +* * +* cobjps.h - Definitions for writing standard proxies and stubs * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + +#if !defined( _COBJPS_H_ ) +#define _COBJPS_H_ + + +/****** IRpcChannel Interface ***********************************************/ + +interface IRpcChannel : IUnknown +{ + STDMETHOD(GetStream)(REFIID iid, int iMethod, BOOL fSend, + BOOL fNoWait, DWORD size, IStream FAR* FAR* ppIStream) = 0; + STDMETHOD(Call)(IStream FAR* pIStream) = 0; + STDMETHOD(GetDestCtx)(DWORD FAR* lpdwDestCtx, LPVOID FAR* lplpvDestCtx) = 0; + STDMETHOD(IsConnected)(void) = 0; +}; + + +/****** IRpcProxy Interface *************************************************/ + +// IRpcProxy is an interface implemented by proxy objects. A proxy object has +// exactly the same interfaces as the real object in addition to IRpcProxy. +// + +interface IRpcProxy : IUnknown +{ + STDMETHOD(Connect)(IRpcChannel FAR* pRpcChannel) = 0; + STDMETHOD_(void, Disconnect)(void) = 0; +}; + + +/****** IRpcStub Interface **************************************************/ + +// IRpcStub is an interface implemented by stub objects. +// + +interface IRpcStub : IUnknown +{ + STDMETHOD(Connect)(IUnknown FAR* pUnk) = 0; + STDMETHOD_(void, Disconnect)(void) = 0; + STDMETHOD(Invoke)(REFIID iid, int iMethod, IStream FAR* pIStream, + DWORD dwDestCtx, LPVOID lpvDestCtx) = 0; + STDMETHOD_(BOOL, IsIIDSupported)(REFIID iid) = 0; + STDMETHOD_(ULONG, CountRefs)(void) = 0; +}; + + +/****** IPSFactory Interface ************************************************/ + +// IPSFactory - creates proxies and stubs +// + +interface IPSFactory : IUnknown +{ + STDMETHOD(CreateProxy)(IUnknown FAR* pUnkOuter, REFIID riid, + IRpcProxy FAR* FAR* ppProxy, void FAR* FAR* ppv) = 0; + STDMETHOD(CreateStub)(REFIID riid, IUnknown FAR* pUnkServer, + IRpcStub FAR* FAR* ppStub) = 0; +}; + +#endif // _COBJPS_H_ diff --git a/private/oleauto/ole/win16/coguid.h b/private/oleauto/ole/win16/coguid.h new file mode 100644 index 000000000..049884168 --- /dev/null +++ b/private/oleauto/ole/win16/coguid.h @@ -0,0 +1,65 @@ +/*****************************************************************************\ +* * +* coguid.h - Master definition of GUIDs for compobj.dll * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + +/* this file is the master definition of all GUIDs for the component object + model and is included in compobj.h. Some GUIDs for moinkers and storage + appear here as well. All of these GUIDs are OLE GUIDs only in the sense + that part of the GUID range owned by OLE was used to define them. + + NOTE: The second byte of all of these GUIDs is 0. +*/ + + +DEFINE_GUID(GUID_NULL, 0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + +DEFINE_OLEGUID(IID_IUnknown, 0x00000000L, 0, 0); +DEFINE_OLEGUID(IID_IClassFactory, 0x00000001L, 0, 0); +DEFINE_OLEGUID(IID_IMalloc, 0x00000002L, 0, 0); +DEFINE_OLEGUID(IID_IMarshal, 0x00000003L, 0, 0); + +/* RPC related interfaces */ +DEFINE_OLEGUID(IID_IRpcChannel, 0x00000004L, 0, 0); +DEFINE_OLEGUID(IID_IRpcStub, 0x00000005L, 0, 0); +DEFINE_OLEGUID(IID_IStubManager, 0x00000006L, 0, 0); +DEFINE_OLEGUID(IID_IRpcProxy, 0x00000007L, 0, 0); +DEFINE_OLEGUID(IID_IProxyManager, 0x00000008L, 0, 0); +DEFINE_OLEGUID(IID_IPSFactory, 0x00000009L, 0, 0); + +/* storage related interfaces */ +DEFINE_OLEGUID(IID_ILockBytes, 0x0000000aL, 0, 0); +DEFINE_OLEGUID(IID_IStorage, 0x0000000bL, 0, 0); +DEFINE_OLEGUID(IID_IStream, 0x0000000cL, 0, 0); +DEFINE_OLEGUID(IID_IEnumSTATSTG, 0x0000000dL, 0, 0); + +/* moniker related interfaces */ +DEFINE_OLEGUID(IID_IBindCtx, 0x0000000eL, 0, 0); +DEFINE_OLEGUID(IID_IMoniker, 0x0000000fL, 0, 0); +DEFINE_OLEGUID(IID_IRunningObjectTable, 0x00000010L, 0, 0); +DEFINE_OLEGUID(IID_IInternalMoniker, 0x00000011L, 0, 0); + +/* storage related interfaces */ +DEFINE_OLEGUID(IID_IRootStorage, 0x00000012L, 0, 0); +DEFINE_OLEGUID(IID_IDfReserved1, 0x00000013L, 0, 0); +DEFINE_OLEGUID(IID_IDfReserved2, 0x00000014L, 0, 0); +DEFINE_OLEGUID(IID_IDfReserved3, 0x00000015L, 0, 0); + +/* concurrency releated interfaces */ +DEFINE_OLEGUID(IID_IMessageFilter, 0x00000016L, 0, 0); + +/* CLSID of standard marshaler */ +DEFINE_OLEGUID(CLSID_StdMarshal, 0x00000017L, 0, 0); + +/* interface on server for getting info for std marshaler */ +DEFINE_OLEGUID(IID_IStdMarshalInfo, 0x00000018L, 0, 0); + +/* interface to inform object of number of external connections */ +DEFINE_OLEGUID(IID_IExternalConnection, 0x00000019L, 0, 0); + +/* NOTE: LSB 0x1a through 0xff are reserved for future use */ diff --git a/private/oleauto/ole/win16/compobj.h b/private/oleauto/ole/win16/compobj.h new file mode 100644 index 000000000..a438db8e4 --- /dev/null +++ b/private/oleauto/ole/win16/compobj.h @@ -0,0 +1,1031 @@ +/*****************************************************************************\ +* * +* compobj.h - Component object model definitions * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + + +#if !defined( _COMPOBJ_H_ ) +#define _COMPOBJ_H_ + +/****** Linkage Definitions *************************************************/ + +/* + * These are macros for declaring methods/functions. They exist so that + * control over the use of keywords (CDECL, PASCAL, __export, + * extern "C") resides in one place, and because this is the least + * intrusive way of writing function declarations that do not have + * to be modified in order to port to the Mac. + * + * The macros without the trailing underscore are for functions/methods + * which a return value of type HRESULT; this is by far the most common + * case in OLE. The macros with a trailing underscore take a return + * type as a parameter. + * + * WARNING: STDAPI is hard coded into the LPFNGETCLASSOBJECT typedef below. + */ + +#ifdef __cplusplus + #define EXTERN_C extern "C" +#else + #define EXTERN_C extern +#endif + +#ifdef _MAC +#define STDMETHODCALLTYPE +#define STDAPICALLTYPE pascal + +#define STDAPI EXTERN_C STDAPICALLTYPE HRESULT +#define STDAPI_(type) EXTERN_C STDAPICALLTYPE type + +#else // !_MAC + +#ifdef WIN32 +#define STDMETHODCALLTYPE __export __cdecl +#define STDAPICALLTYPE __export __stdcall + +#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +#define STDAPI_(type) EXTERN_C type STDAPICALLTYPE + +#else +#define STDMETHODCALLTYPE __export FAR CDECL +#define STDAPICALLTYPE __export FAR PASCAL + +#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +#define STDAPI_(type) EXTERN_C type STDAPICALLTYPE + +#endif + +#endif //!_MAC + +#define STDMETHODIMP HRESULT STDMETHODCALLTYPE +#define STDMETHODIMP_(type) type STDMETHODCALLTYPE + + +/****** Interface Declaration ***********************************************/ + +/* + * These are macros for declaring interfaces. They exist so that + * a single definition of the interface is simulataneously a proper + * declaration of the interface structures (C++ abstract classes) + * for both C and C++. + * + * DECLARE_INTERFACE(iface) is used to declare an interface that does + * not derive from a base interface. + * DECLARE_INTERFACE_(iface, baseiface) is used to declare an interface + * that does derive from a base interface. + * + * By default if the source file has a .c extension the C version of + * the interface declaratations will be expanded; if it has a .cpp + * extension the C++ version will be expanded. if you want to force + * the C version expansion even though the source file has a .cpp + * extension, then define the macro "CINTERFACE". + * eg. cl -DCINTERFACE file.cpp + * + * Example Interface declaration: + * + * #undef INTERFACE + * #define INTERFACE IClassFactory + * + * DECLARE_INTERFACE_(IClassFactory, IUnknown) + * { + * // *** IUnknown methods *** + * STDMETHOD(QueryInterface) (THIS_ + * REFIID riid, + * LPVOID FAR* ppvObj) PURE; + * STDMETHOD_(ULONG,AddRef) (THIS) PURE; + * STDMETHOD_(ULONG,Release) (THIS) PURE; + * + * // *** IClassFactory methods *** + * STDMETHOD(CreateInstance) (THIS_ + * LPUNKNOWN pUnkOuter, + * REFIID riid, + * LPVOID FAR* ppvObject) PURE; + * }; + * + * Example C++ expansion: + * + * struct FAR IClassFactory : public IUnknown + * { + * virtual HRESULT STDMETHODCALLTYPE QueryInterface( + * IID FAR& riid, + * LPVOID FAR* ppvObj) = 0; + * virtual HRESULT STDMETHODCALLTYPE AddRef(void) = 0; + * virtual HRESULT STDMETHODCALLTYPE Release(void) = 0; + * virtual HRESULT STDMETHODCALLTYPE CreateInstance( + * LPUNKNOWN pUnkOuter, + * IID FAR& riid, + * LPVOID FAR* ppvObject) = 0; + * }; + * + * NOTE: Our documentation says '#define interface class' but we use + * 'struct' instead of 'class' to keep a lot of 'public:' lines + * out of the interfaces. The 'FAR' forces the 'this' pointers to + * be far, which is what we need. + * + * Example C expansion: + * + * typedef struct IClassFactory + * { + * const struct IClassFactoryVtbl FAR* lpVtbl; + * } IClassFactory; + * + * typedef struct IClassFactoryVtbl IClassFactoryVtbl; + * + * struct IClassFactoryVtbl + * { + * HRESULT (STDMETHODCALLTYPE * QueryInterface) ( + * IClassFactory FAR* This, + * IID FAR* riid, + * LPVOID FAR* ppvObj) ; + * HRESULT (STDMETHODCALLTYPE * AddRef) (IClassFactory FAR* This) ; + * HRESULT (STDMETHODCALLTYPE * Release) (IClassFactory FAR* This) ; + * HRESULT (STDMETHODCALLTYPE * CreateInstance) ( + * IClassFactory FAR* This, + * LPUNKNOWN pUnkOuter, + * IID FAR* riid, + * LPVOID FAR* ppvObject); + * HRESULT (STDMETHODCALLTYPE * LockServer) ( + * IClassFactory FAR* This, + * BOOL fLock); + * }; + */ + + +#if defined(__cplusplus) && !defined(CINTERFACE) +#ifdef __TURBOC__ +#define interface struct huge +#else +#define interface struct FAR +#endif +#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method +#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method +#define PURE = 0 +#define THIS_ +#define THIS void +#define DECLARE_INTERFACE(iface) interface iface +#define DECLARE_INTERFACE_(iface, baseiface) interface iface : public baseiface + +#else +#define interface struct + +#ifdef _MAC + +#define STDMETHOD(method) long method##pad;\ + HRESULT (STDMETHODCALLTYPE * method) +#define STDMETHOD_(type,method) long method##pad;\ + type (STDMETHODCALLTYPE * method) + +#else // _MAC + +#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE * method) +#define STDMETHOD_(type,method) type (STDMETHODCALLTYPE * method) + +#endif // !_MAC + +#define PURE +#define THIS_ INTERFACE FAR* This, +#define THIS INTERFACE FAR* This +#ifdef CONST_VTABLE +#define DECLARE_INTERFACE(iface) typedef interface iface { \ + const struct iface##Vtbl FAR* lpVtbl; \ + } iface; \ + typedef const struct iface##Vtbl iface##Vtbl; \ + const struct iface##Vtbl +#else +#define DECLARE_INTERFACE(iface) typedef interface iface { \ + struct iface##Vtbl FAR* lpVtbl; \ + } iface; \ + typedef struct iface##Vtbl iface##Vtbl; \ + struct iface##Vtbl +#endif +#define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE(iface) + +#endif + + +/****** Additional basic types **********************************************/ + + +#ifndef FARSTRUCT +#ifdef __cplusplus +#define FARSTRUCT FAR +#else +#define FARSTRUCT +#endif // __cplusplus +#endif // FARSTRUCT + + +#ifndef WINAPI /* If not included with 3.1 headers... */ + +#ifdef WIN32 +#define FAR +#define PASCAL __stdcall +#define CDECL +#else +#define FAR _far +#define PASCAL _pascal +#define CDECL _cdecl +#endif + +#define VOID void +#define WINAPI FAR PASCAL +#define CALLBACK FAR PASCAL + +#ifndef FALSE +#define FALSE 0 +#define TRUE 1 +#endif + +typedef int BOOL; +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned int UINT; + +typedef long LONG; +typedef unsigned long DWORD; + + +typedef UINT WPARAM; +typedef LONG LPARAM; +typedef LONG LRESULT; + +typedef unsigned int HANDLE; +#define DECLARE_HANDLE(name) typedef UINT name + +DECLARE_HANDLE(HMODULE); +DECLARE_HANDLE(HINSTANCE); +DECLARE_HANDLE(HLOCAL); +DECLARE_HANDLE(HGLOBAL); +DECLARE_HANDLE(HDC); +DECLARE_HANDLE(HRGN); +DECLARE_HANDLE(HWND); +DECLARE_HANDLE(HMENU); +DECLARE_HANDLE(HACCEL); +DECLARE_HANDLE(HTASK); + +#ifndef NULL +#define NULL 0 +#endif + + +typedef void FAR * LPVOID; +typedef WORD FAR * LPWORD; +typedef DWORD FAR * LPDWORD; +typedef char FAR* LPSTR; +typedef const char FAR* LPCSTR; +typedef void FAR* LPLOGPALETTE; +typedef void FAR* LPMSG; +//typedef struct tagMSG FAR *LPMSG; + +typedef HANDLE FAR *LPHANDLE; +typedef struct tagRECT FAR *LPRECT; + +typedef struct FARSTRUCT tagSIZE +{ + int cx; + int cy; +} SIZE; +typedef SIZE* PSIZE; + + +#endif /* WINAPI */ + + +typedef short SHORT; +typedef unsigned short USHORT; +typedef DWORD ULONG; + + +#ifndef HUGEP +#ifdef WIN32 +#define HUGEP +#else +#define HUGEP __huge +#endif // WIN32 +#endif // HUGEP + +typedef WORD WCHAR; + +#ifndef WIN32 +typedef struct FARSTRUCT _LARGE_INTEGER { + DWORD LowPart; + LONG HighPart; +} LARGE_INTEGER, *PLARGE_INTEGER; +#endif +#define LISet32(li, v) ((li).HighPart = ((LONG)(v)) < 0 ? -1 : 0, (li).LowPart = (v)) + +#ifndef WIN32 +typedef struct FARSTRUCT _ULARGE_INTEGER { + DWORD LowPart; + DWORD HighPart; +} ULARGE_INTEGER, *PULARGE_INTEGER; +#endif +#define ULISet32(li, v) ((li).HighPart = 0, (li).LowPart = (v)) + +#ifndef _WINDOWS_ +#ifndef _FILETIME_ +#define _FILETIME_ +typedef struct FARSTRUCT tagFILETIME +{ + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} FILETIME; +#endif +#endif + +#ifdef WIN32 +#define HTASK DWORD +#endif + +#include "scode.h" + + + +// *********************** Compobj errors ********************************** + +#define CO_E_NOTINITIALIZED (CO_E_FIRST + 0x0) +// CoInitialize has not been called and must be + +#define CO_E_ALREADYINITIALIZED (CO_E_FIRST + 0x1) +// CoInitialize has already been called and cannot be called again (temporary) + +#define CO_E_CANTDETERMINECLASS (CO_E_FIRST + 0x2) +// can't determine clsid (e.g., extension not in reg.dat) + +#define CO_E_CLASSSTRING (CO_E_FIRST + 0x3) +// the string form of the clsid is invalid (including ole1 classes) + +#define CO_E_IIDSTRING (CO_E_FIRST + 0x4) +// the string form of the iid is invalid + +#define CO_E_APPNOTFOUND (CO_E_FIRST + 0x5) +// application not found + +#define CO_E_APPSINGLEUSE (CO_E_FIRST + 0x6) +// application cannot be run more than once + +#define CO_E_ERRORINAPP (CO_E_FIRST + 0x7) +// some error in the app program file + +#define CO_E_DLLNOTFOUND (CO_E_FIRST + 0x8) +// dll not found + +#define CO_E_ERRORINDLL (CO_E_FIRST + 0x9) +// some error in the dll file + +#define CO_E_WRONGOSFORAPP (CO_E_FIRST + 0xa) +// app written for other version of OS or other OS altogether + +#define CO_E_OBJNOTREG (CO_E_FIRST + 0xb) +// object is not registered + +#define CO_E_OBJISREG (CO_E_FIRST + 0xc) +// object is already registered + +#define CO_E_OBJNOTCONNECTED (CO_E_FIRST + 0xd) +// handler is not connected to server + +#define CO_E_APPDIDNTREG (CO_E_FIRST + 0xe) +// app was launched, but didn't registered a class factory + + +// ********************* ClassObject errors ******************************** + +#define CLASS_E_NOAGGREGATION (CLASSFACTORY_E_FIRST + 0x0) +// class does not support aggregation (or class object is remote) + +#define CLASS_E_CLASSNOTAVAILABLE (CLASSFACTORY_E_FIRST + 0x1) +// dll doesn't support that class (returned from DllGetClassObject) + + +// *********************** Reg.dat errors ********************************** + +#define REGDB_E_READREGDB (REGDB_E_FIRST + 0x0) +// some error reading the registration database + +#define REGDB_E_WRITEREGDB (REGDB_E_FIRST + 0x1) +// some error reading the registration database + +#define REGDB_E_KEYMISSING (REGDB_E_FIRST + 0x2) +// some error reading the registration database + +#define REGDB_E_INVALIDVALUE (REGDB_E_FIRST + 0x3) +// some error reading the registration database + +#define REGDB_E_CLASSNOTREG (REGDB_E_FIRST + 0x4) +// some error reading the registration database + +#define REGDB_E_IIDNOTREG (REGDB_E_FIRST + 0x5) +// some error reading the registration database + + +// *************************** RPC errors ********************************** + +#define RPC_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_RPC, 0x000) + +// call was rejected by callee, either by MF::HandleIncomingCall or +#define RPC_E_CALL_REJECTED (RPC_E_FIRST + 0x1) + +// call was canceld by call - returned by MessagePending +// this code only occurs if MessagePending return cancel +#define RPC_E_CALL_CANCELED (RPC_E_FIRST + 0x2) + +// the caller is dispatching an intertask SendMessage call and +// can NOT call out via PostMessage +#define RPC_E_CANTPOST_INSENDCALL (RPC_E_FIRST + 0x3) + +// the caller is dispatching an asynchronus call can NOT +// make an outgoing call on behalf of this call +#define RPC_E_CANTCALLOUT_INASYNCCALL (RPC_E_FIRST + 0x4) + +// the caller is not in a state where an outgoing call can be made +// this is the case if the caller has an outstandig call and +// another incoming call was excepted by HIC; now the caller is +// not allowed to call out again +#define RPC_E_CANTCALLOUT_INEXTERNALCALL (RPC_E_FIRST + 0x5) + +// the connection terminated or is in a bogus state +// and can not be used any more. Other connections +// are still valid. +#define RPC_E_CONNECTION_TERMINATED (RPC_E_FIRST + 0x6) + +// the callee (server [not server application]) is not available +// and disappeared; all connections are invalid +#define RPC_E_SERVER_DIED (RPC_E_FIRST + 0x7) + +// the caller (client ) disappeared while the callee (server) was +// processing a call +#define RPC_E_CLIENT_DIED (RPC_E_FIRST + 0x8) + +// the date paket with the marshalled parameter data is +// incorrect +#define RPC_E_INVALID_DATAPACKET (RPC_E_FIRST + 0x9) + +// the call was not transmitted properly; the message queue +// was full and was not emptied after yielding +#define RPC_E_CANTTRANSMIT_CALL (RPC_E_FIRST + 0xa) + +// the client (caller) can not marshall the parameter data +// or unmarshall the return data - low memory etc. +#define RPC_E_CLIENT_CANTMARSHAL_DATA (RPC_E_FIRST + 0xb) +#define RPC_E_CLIENT_CANTUNMARSHAL_DATA (RPC_E_FIRST + 0xc) + +// the server (caller) can not unmarshall the parameter data +// or marshall the return data - low memory +#define RPC_E_SERVER_CANTMARSHAL_DATA (RPC_E_FIRST + 0xd) +#define RPC_E_SERVER_CANTUNMARSHAL_DATA (RPC_E_FIRST + 0xe) + +// received data are invalid; can be server or +// client data +#define RPC_E_INVALID_DATA (RPC_E_FIRST + 0xf) + +// a particular parameter is invalid and can not be un/marshalled +#define RPC_E_INVALID_PARAMETER (RPC_E_FIRST + 0x10) + +// DDE conversation - no second outgoing call on same channel +#define RPC_E_CANTCALLOUT_AGAIN (RPC_E_FIRST + 0x11) + +// a internal error occured +#define RPC_E_UNEXPECTED (RPC_E_FIRST + 0xFFFF) + + +/****** Globally Unique Ids *************************************************/ + +#ifdef __cplusplus + +struct FAR GUID +{ + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[8]; + + BOOL operator==(const GUID& iidOther) const + +#ifdef WIN32 + { return !memcmp(&Data1,&iidOther.Data1,sizeof(GUID)); } +#else + { return !_fmemcmp(&Data1,&iidOther.Data1,sizeof(GUID)); } +#endif + BOOL operator!=(const GUID& iidOther) const + { return !((*this) == iidOther); } +}; + +#else +typedef struct GUID +{ + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[8]; +} GUID; +#endif + +typedef GUID FAR* LPGUID; + + +// macros to define byte pattern for a GUID. +// Example: DEFINE_GUID(GUID_XXX, a, b, c, ...); +// +// Each dll/exe must initialize the GUIDs once. This is done in one of +// two ways. If you are not using precompiled headers for the file(s) which +// initializes the GUIDs, define INITGUID before including compobj.h. This +// is how OLE builds the initialized versions of the GUIDs which are included +// in compobj.dll. +// +// The alternative (which some versions of the compiler don't handle properly; +// they wind up with the initialized GUIDs in a data, not a text segment), +// is to use a precompiled version of compobj.h and then include initguid.h +// after compobj.h followed by one or more of the guid defintion files. + + +#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + EXTERN_C const GUID CDECL FAR name + +#ifdef INITGUID +#include "initguid.h" +#endif + +#define DEFINE_OLEGUID(name, l, w1, w2) \ + DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) + + +// Interface ID are just a kind of GUID +typedef GUID IID; +typedef IID FAR* LPIID; +#define IID_NULL GUID_NULL +#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) + + +// Class ID are just a kind of GUID +typedef GUID CLSID; +typedef CLSID FAR* LPCLSID; +#define CLSID_NULL GUID_NULL +#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) + + +#if defined(__cplusplus) +#define REFGUID const GUID FAR& +#define REFIID const IID FAR& +#define REFCLSID const CLSID FAR& +#else +#define REFGUID const GUID FAR* const +#define REFIID const IID FAR* const +#define REFCLSID const CLSID FAR* const +#endif + + +#ifndef INITGUID +#include "coguid.h" +#endif + +/****** Other value types ***************************************************/ + +// memory context values; passed to CoGetMalloc +typedef enum tagMEMCTX +{ + MEMCTX_TASK = 1, // task (private) memory + MEMCTX_SHARED = 2, // shared memory (between processes) +#ifdef _MAC + MEMCTX_MACSYSTEM = 3, // on the mac, the system heap +#endif + + // these are mostly for internal use... + MEMCTX_UNKNOWN = -1, // unknown context (when asked about it) + MEMCTX_SAME = -2, // same context (as some other pointer) +} MEMCTX; + + + +// class context: used to determine what scope and kind of class object to use +// NOTE: this is a bitwise enum +typedef enum tagCLSCTX +{ + CLSCTX_INPROC_SERVER = 1, // server dll (runs in same process as caller) + CLSCTX_INPROC_HANDLER = 2, // handler dll (runs in same process as caller) + CLSCTX_LOCAL_SERVER = 4 // server exe (runs on same machine; diff proc) +} CLSCTX; + +#define CLSCTX_ALL (CLSCTX_INPROC_SERVER| \ + CLSCTX_INPROC_HANDLER| \ + CLSCTX_LOCAL_SERVER) + +#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) + +#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER) + + +// class registration flags; passed to CoRegisterClassObject +typedef enum tagREGCLS +{ + REGCLS_SINGLEUSE = 0, // class object only generates one instance + REGCLS_MULTIPLEUSE = 1, // same class object genereates multiple inst. + // and local automatically goes into inproc tbl. + REGCLS_MULTI_SEPARATE = 2, // multiple use, but separate control over each + // context. + + // NOTE: CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE is the same as + // (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER), REGCLS_MULTI_SEPARATE, but + // not the same as CLSCTX_LOCAL_SERVER, REGCLS_MULTI_SEPARATE. +} REGCLS; + + +// interface marshaling definitions +#define MARSHALINTERFACE_MIN 40 // minimum number of bytes for interface marshl + +// marshaling flags; passed to CoMarshalInterface +typedef enum tagMSHLFLAGS +{ + MSHLFLAGS_NORMAL = 0, // normal marshaling via proxy/stub + MSHLFLAGS_TABLESTRONG = 1, // keep object alive; must explicitly release + MSHLFLAGS_TABLEWEAK = 2 // doesn't hold object alive; still must release +} MSHLFLAGS; + +// marshal context: determines the destination context of the marshal operation +typedef enum tagMSHCTX +{ + MSHCTX_LOCAL = 0, // unmarshal context is local (eg.shared memory) + MSHCTX_NOSHAREDMEM = 1, // unmarshal context has no shared memory access +} MSHCTX; + + +// call type used by IMessageFilter::HandleIncommingMessage +typedef enum tagCALLTYPE +{ + CALLTYPE_TOPLEVEL = 1, // toplevel call - no outgoing call + CALLTYPE_NESTED = 2, // callback on behalf of previous outgoing call - should always handle + CALLTYPE_ASYNC = 3, // aysnchronous call - can NOT be rejected + CALLTYPE_TOPLEVEL_CALLPENDING = 4, // new toplevel call with new LID + CALLTYPE_ASYNC_CALLPENDING = 5 // async call - can NOT be rejected +} CALLTYPE; + +typedef struct tagINTERFACEINFO +{ + interface IUnknown FAR *pUnk; // the pointer to the object + IID iid; // interface id + WORD wMethod; // interface methode +} INTERFACEINFO, FAR * LPINTERFACEINFO; + +// status of server call - returned by IMessageFilter::HandleIncommingCall +// and passed to IMessageFilter::RetryRejectedCall +typedef enum tagSERVERCALL +{ + SERVERCALL_ISHANDLED = 0, + SERVERCALL_REJECTED = 1, + SERVERCALL_RETRYLATER = 2 +} SERVERCALL; + + +// Pending type indicates the level of nesting +typedef enum tagPENDINGTYPE +{ + PENDINGTYPE_TOPLEVEL = 1, // toplevel call + PENDINGTYPE_NESTED = 2, // nested call +} PENDINGTYPE; + +// return values of MessagePending +typedef enum tagPENDINGMSG +{ + PENDINGMSG_CANCELCALL = 0, // cancel the outgoing call + PENDINGMSG_WAITNOPROCESS = 1, // wait for the return and don't dispatch the message + PENDINGMSG_WAITDEFPROCESS = 2 // wait and dispatch the message + +} PENDINGMSG; + + +// bit flags for IExternalConnection +typedef enum tagEXTCONN +{ + EXTCONN_STRONG = 0x0001 // strong connection +} EXTCONN; + + +/****** IUnknown Interface **************************************************/ + + +#undef INTERFACE +#define INTERFACE IUnknown + +DECLARE_INTERFACE(IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; +}; + +typedef IUnknown FAR* LPUNKNOWN; + + +/****** Class Factory Interface *******************************************/ + + +#undef INTERFACE +#define INTERFACE IClassFactory + +DECLARE_INTERFACE_(IClassFactory, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IClassFactory methods *** + STDMETHOD(CreateInstance) (THIS_ LPUNKNOWN pUnkOuter, + REFIID riid, + LPVOID FAR* ppvObject) PURE; + STDMETHOD(LockServer) (THIS_ BOOL fLock) PURE; + +}; +typedef IClassFactory FAR* LPCLASSFACTORY; + + +/****** Memory Allocation Interface ***************************************/ + + +#undef INTERFACE +#define INTERFACE IMalloc + +DECLARE_INTERFACE_(IMalloc, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IMalloc methods *** + STDMETHOD_(void FAR*, Alloc) (THIS_ ULONG cb) PURE; + STDMETHOD_(void FAR*, Realloc) (THIS_ void FAR* pv, ULONG cb) PURE; + STDMETHOD_(void, Free) (THIS_ void FAR* pv) PURE; + STDMETHOD_(ULONG, GetSize) (THIS_ void FAR* pv) PURE; + STDMETHOD_(int, DidAlloc) (THIS_ void FAR* pv) PURE; + STDMETHOD_(void, HeapMinimize) (THIS) PURE; +}; +typedef IMalloc FAR* LPMALLOC; + + +/****** IMarshal Interface ************************************************/ + +// forward declaration for IStream; must include storage.h later to use +#ifdef __cplusplus +interface IStream; +#else +typedef interface IStream IStream; +#endif +typedef IStream FAR* LPSTREAM; + + +#undef INTERFACE +#define INTERFACE IMarshal + +DECLARE_INTERFACE_(IMarshal, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IMarshal methods *** + STDMETHOD(GetUnmarshalClass)(THIS_ REFIID riid, LPVOID pv, + DWORD dwDestContext, LPVOID pvDestContext, + DWORD mshlflags, LPCLSID pCid) PURE; + STDMETHOD(GetMarshalSizeMax)(THIS_ REFIID riid, LPVOID pv, + DWORD dwDestContext, LPVOID pvDestContext, + DWORD mshlflags, LPDWORD pSize) PURE; + STDMETHOD(MarshalInterface)(THIS_ LPSTREAM pStm, REFIID riid, + LPVOID pv, DWORD dwDestContext, LPVOID pvDestContext, + DWORD mshlflags) PURE; + STDMETHOD(UnmarshalInterface)(THIS_ LPSTREAM pStm, REFIID riid, + LPVOID FAR* ppv) PURE; + STDMETHOD(ReleaseMarshalData)(THIS_ LPSTREAM pStm) PURE; + STDMETHOD(DisconnectObject)(THIS_ DWORD dwReserved) PURE; +}; +typedef IMarshal FAR* LPMARSHAL; + + +#undef INTERFACE +#define INTERFACE IStdMarshalInfo + +DECLARE_INTERFACE_(IStdMarshalInfo, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IStdMarshalInfo methods *** + STDMETHOD(GetClassForHandler)(THIS_ DWORD dwDestContext, + LPVOID pvDestContext, LPCLSID pClsid) PURE; +}; +typedef IStdMarshalInfo FAR* LPSTDMARSHALINFO; + + +/****** Message Filter Interface *******************************************/ + + +#undef INTERFACE +#define INTERFACE IMessageFilter + +DECLARE_INTERFACE_(IMessageFilter, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IMessageFilter methods *** + STDMETHOD_(DWORD, HandleInComingCall) (THIS_ DWORD dwCallType, + HTASK htaskCaller, DWORD dwTickCount, + DWORD dwReserved ) PURE; + STDMETHOD_(DWORD, RetryRejectedCall) (THIS_ + HTASK htaskCallee, DWORD dwTickCount, + DWORD dwRejectType ) PURE; + STDMETHOD_(DWORD, MessagePending) (THIS_ + HTASK htaskCallee, DWORD dwTickCount, + DWORD dwPendingType ) PURE; +}; +typedef IMessageFilter FAR* LPMESSAGEFILTER; + + +/****** External Connection Information ***********************************/ + +#undef INTERFACE +#define INTERFACE IExternalConnection + +DECLARE_INTERFACE_(IExternalConnection, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IExternalConnection methods *** + STDMETHOD_(DWORD, AddConnection) (THIS_ DWORD extconn, DWORD reserved) PURE; + STDMETHOD_(DWORD, ReleaseConnection) (THIS_ DWORD extconn, DWORD reserved, BOOL fLastReleaseCloses) PURE; +}; +typedef IExternalConnection FAR* LPEXTERNALCONNECTION; + + +/****** Enumerator Interfaces *********************************************/ + +/* + * Since we don't use parametrized types, we put in explicit declarations + * of the enumerators we need. + */ + + +#undef INTERFACE +#define INTERFACE IEnumString + +DECLARE_INTERFACE_(IEnumString, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IEnumString methods *** + STDMETHOD(Next) (THIS_ ULONG celt, + LPSTR FAR* rgelt, + ULONG FAR* pceltFetched) PURE; + STDMETHOD(Skip) (THIS_ ULONG celt) PURE; + STDMETHOD(Reset) (THIS) PURE; + STDMETHOD(Clone) (THIS_ IEnumString FAR* FAR* ppenm) PURE; +}; +typedef IEnumString FAR* LPENUMSTRING; + + +#undef INTERFACE +#define INTERFACE IEnumUnknown + +DECLARE_INTERFACE_(IEnumUnknown, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IEnumUnknown methods *** + STDMETHOD(Next) (THIS_ ULONG celt, LPUNKNOWN FAR* rgelt, ULONG FAR* pceltFetched) PURE; + STDMETHOD(Skip) (THIS_ ULONG celt) PURE; + STDMETHOD(Reset) (THIS) PURE; + STDMETHOD(Clone) (THIS_ IEnumUnknown FAR* FAR* ppenm) PURE; +}; +typedef IEnumUnknown FAR* LPENUMUNKNOWN; + + +/****** STD Object API Prototypes *****************************************/ + +STDAPI_(DWORD) CoBuildVersion( VOID ); + +/* init/uninit */ + +STDAPI CoInitialize(LPMALLOC pMalloc); +STDAPI_(void) CoUninitialize(void); +STDAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC FAR* ppMalloc); +STDAPI_(DWORD) CoGetCurrentProcess(void); +STDAPI CoCreateStandardMalloc(DWORD memctx, IMalloc FAR* FAR* ppMalloc); + + +/* register/revoke/get class objects */ + +STDAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved, + REFIID riid, LPVOID FAR* ppv); +STDAPI CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk, + DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister); +STDAPI CoRevokeClassObject(DWORD dwRegister); + + +/* marshaling interface pointers */ + +STDAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, + DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags); +STDAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID FAR* ppv); +STDAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult); +STDAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT FAR * phresult); +STDAPI CoReleaseMarshalData(LPSTREAM pStm); +STDAPI CoDisconnectObject(LPUNKNOWN pUnk, DWORD dwReserved); +STDAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases); +STDAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk, + DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, + LPMARSHAL FAR* ppMarshal); + +STDAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN pUnk); + +/* dll loading helpers; keeps track of ref counts and unloads all on exit */ + +STDAPI_(HINSTANCE) CoLoadLibrary(LPSTR lpszLibName, BOOL bAutoFree); +STDAPI_(void) CoFreeLibrary(HINSTANCE hInst); +STDAPI_(void) CoFreeAllLibraries(void); +STDAPI_(void) CoFreeUnusedLibraries(void); + + +/* helper for creating instances */ + +STDAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, + DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv); + + +/* other helpers */ +STDAPI_(BOOL) IsEqualGUID(REFGUID rguid1, REFGUID rguid2); +STDAPI StringFromCLSID(REFCLSID rclsid, LPSTR FAR* lplpsz); +STDAPI CLSIDFromString(LPSTR lpsz, LPCLSID pclsid); +STDAPI StringFromIID(REFIID rclsid, LPSTR FAR* lplpsz); +STDAPI IIDFromString(LPSTR lpsz, LPIID lpiid); +STDAPI_(BOOL) CoIsOle1Class(REFCLSID rclsid); +STDAPI ProgIDFromCLSID (REFCLSID clsid, LPSTR FAR* lplpszProgID); +STDAPI CLSIDFromProgID (LPCSTR lpszProgID, LPCLSID lpclsid); +STDAPI_(int) StringFromGUID2(REFGUID rguid, LPSTR lpsz, int cbMax); + +STDAPI CoCreateGuid(GUID FAR *pguid); + +STDAPI_(BOOL) CoFileTimeToDosDateTime( + FILETIME FAR* lpFileTime, LPWORD lpDosDate, LPWORD lpDosTime); +STDAPI_(BOOL) CoDosDateTimeToFileTime( + WORD nDosDate, WORD nDosTime, FILETIME FAR* lpFileTime); +STDAPI CoFileTimeNow( FILETIME FAR* lpFileTime ); + + +STDAPI CoRegisterMessageFilter( LPMESSAGEFILTER lpMessageFilter, + LPMESSAGEFILTER FAR* lplpMessageFilter ); + + +/* TreatAs APIS */ + +STDAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew); +STDAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew); + + +/* the server dlls must define their DllGetClassObject and DllCanUnloadNow + * to match these; the typedefs are located here to ensure all are changed at + * the same time. + */ + +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID FAR* ppv); +#ifdef _MAC +typedef STDAPICALLTYPE HRESULT (FAR* LPFNGETCLASSOBJECT) (REFCLSID, REFIID, LPVOID FAR*); +#else +typedef HRESULT (STDAPICALLTYPE FAR* LPFNGETCLASSOBJECT) (REFCLSID, REFIID, LPVOID FAR*); +#endif + + +STDAPI DllCanUnloadNow(void); +#ifdef _MAC +typedef STDAPICALLTYPE HRESULT (FAR* LPFNCANUNLOADNOW)(void); +#else +typedef HRESULT (STDAPICALLTYPE FAR* LPFNCANUNLOADNOW)(void); +#endif + + +/****** Debugging Helpers *************************************************/ + +#ifdef _DEBUG +// writes to the debug port and displays a message box +STDAPI FnAssert(LPSTR lpstrExpr, LPSTR lpstrMsg, LPSTR lpstrFileName, UINT iLine); +#endif // _DEBUG + +#endif // _COMPOBJ_H_ diff --git a/private/oleauto/ole/win16/dvobj.h b/private/oleauto/ole/win16/dvobj.h new file mode 100644 index 000000000..9c3dac58f --- /dev/null +++ b/private/oleauto/ole/win16/dvobj.h @@ -0,0 +1,480 @@ +/*****************************************************************************\ +* * +* dvobj.h - Data/View object definitions * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + +#if !defined( _DVOBJ_H_ ) +#define _DVOBJ_H_ + +/****** DV value types ******************************************************/ + +// forward type declarations +#if defined(__cplusplus) +interface IStorage; +interface IStream; +interface IAdviseSink; +interface IMoniker; +#else +typedef interface IStorage IStorage; +typedef interface IStream IStream; +typedef interface IAdviseSink IAdviseSink; +typedef interface IMoniker IMoniker; +#endif + +typedef IStorage FAR* LPSTORAGE; +typedef IStream FAR* LPSTREAM; +typedef IAdviseSink FAR* LPADVISESINK; +typedef IMoniker FAR* LPMONIKER; + + +#if !defined(_MAC) +typedef WORD CLIPFORMAT; +#else +typedef unsigned long CLIPFORMAT; // ResType +#endif +typedef CLIPFORMAT FAR* LPCLIPFORMAT; + + +// Data/View aspect; specifies the desired aspect of the object when +// drawing or getting data. +typedef enum tagDVASPECT +{ + DVASPECT_CONTENT = 1, + DVASPECT_THUMBNAIL = 2, + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 +} DVASPECT; + + +// Data/View target device; determines the device for drawing or gettting data +typedef struct FARSTRUCT tagDVTARGETDEVICE +{ + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + BYTE tdData[1]; +} DVTARGETDEVICE; + + +// Format, etc.; completely specifices the kind of data desired, including tymed +typedef struct FARSTRUCT tagFORMATETC +{ + CLIPFORMAT cfFormat; + DVTARGETDEVICE FAR* ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; +} FORMATETC, FAR* LPFORMATETC; + + +// TYpes of storage MEDiums; determines how data is stored or passed around +typedef enum tagTYMED +{ + TYMED_HGLOBAL = 1, + TYMED_FILE = 2, + TYMED_ISTREAM = 4, + TYMED_ISTORAGE = 8, + TYMED_GDI = 16, + TYMED_MFPICT = 32, + TYMED_NULL = 0 +} TYMED; + + +// DATA format DIRection +typedef enum tagDATADIR +{ + DATADIR_GET = 1, + DATADIR_SET = 2, +} DATADIR; + + +// SToraGe MEDIUM; a block of data on a particular medium +typedef struct FARSTRUCT tagSTGMEDIUM +{ + DWORD tymed; + union + { + HANDLE hGlobal; + LPSTR lpszFileName; + IStream FAR* pstm; + IStorage FAR* pstg; + } +#ifdef NONAMELESSUNION + u // add a tag when name less unions not supported +#endif + ; + IUnknown FAR* pUnkForRelease; +} STGMEDIUM, FAR* LPSTGMEDIUM; + + +// Advise Flags +typedef enum tagADVF +{ + ADVF_NODATA = 1, + ADVF_PRIMEFIRST = 2, + ADVF_ONLYONCE = 4, + ADVF_DATAONSTOP = 64, + ADVFCACHE_NOHANDLER = 8, + ADVFCACHE_FORCEBUILTIN = 16, + ADVFCACHE_ONSAVE = 32 +} ADVF; + + +// Stats for data; used by several enumerations and by at least one +// implementation of IDataAdviseHolder; if a field is not used, it +// will be NULL. +typedef struct FARSTRUCT tagSTATDATA +{ // field used by: + FORMATETC formatetc; // EnumAdvise, EnumData (cache), EnumFormats + DWORD advf; // EnumAdvise, EnumData (cache) + IAdviseSink FAR* pAdvSink; // EnumAdvise + DWORD dwConnection; // EnumAdvise +} STATDATA; + +typedef STATDATA FAR* LPSTATDATA; + + + +/****** DV Interfaces ***************************************************/ + + +#undef INTERFACE +#define INTERFACE IEnumFORMATETC + +DECLARE_INTERFACE_(IEnumFORMATETC, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IEnumFORMATETC methods *** + STDMETHOD(Next) (THIS_ ULONG celt, FORMATETC FAR * rgelt, ULONG FAR* pceltFetched) PURE; + STDMETHOD(Skip) (THIS_ ULONG celt) PURE; + STDMETHOD(Reset) (THIS) PURE; + STDMETHOD(Clone) (THIS_ IEnumFORMATETC FAR* FAR* ppenum) PURE; +}; +typedef IEnumFORMATETC FAR* LPENUMFORMATETC; + + +#undef INTERFACE +#define INTERFACE IEnumSTATDATA + +DECLARE_INTERFACE_(IEnumSTATDATA, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE; + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + + // *** IEnumSTATDATA methods *** + STDMETHOD(Next) (THIS_ ULONG celt, STATDATA FAR * rgelt, ULONG FAR* pceltFetched) PURE; + STDMETHOD(Skip) (THIS_ ULONG celt) PURE; + STDMETHOD(Reset) (THIS) PURE; + STDMETHOD(Clone) (THIS_ IEnumSTATDATA FAR* FAR* ppenum) PURE; +}; +typedef IEnumSTATDATA FAR* LPENUMSTATDATA; + + + +#undef INTERFACE +#define INTERFACE IDataObject + +#define DATA_E_FORMATETC DV_E_FORMATETC +#define DATA_S_SAMEFORMATETC (DATA_S_FIRST + 0) + +DECLARE_INTERFACE_(IDataObject, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + + // *** IDataObject methods *** + STDMETHOD(GetData) (THIS_ LPFORMATETC pformatetcIn, + LPSTGMEDIUM pmedium ) PURE; + STDMETHOD(GetDataHere) (THIS_ LPFORMATETC pformatetc, + LPSTGMEDIUM pmedium ) PURE; + STDMETHOD(QueryGetData) (THIS_ LPFORMATETC pformatetc ) PURE; + STDMETHOD(GetCanonicalFormatEtc) (THIS_ LPFORMATETC pformatetc, + LPFORMATETC pformatetcOut) PURE; + STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium, + BOOL fRelease) PURE; + STDMETHOD(EnumFormatEtc) (THIS_ DWORD dwDirection, + LPENUMFORMATETC FAR* ppenumFormatEtc) PURE; + + STDMETHOD(DAdvise) (THIS_ FORMATETC FAR* pFormatetc, DWORD advf, + LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE; + STDMETHOD(DUnadvise) (THIS_ DWORD dwConnection) PURE; + STDMETHOD(EnumDAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE; +}; +typedef IDataObject FAR* LPDATAOBJECT; + + + +#undef INTERFACE +#define INTERFACE IViewObject + +#define VIEW_E_DRAW (VIEW_E_FIRST) +#define E_DRAW VIEW_E_DRAW + +#define VIEW_S_ALREADY_FROZEN (VIEW_S_FIRST) + +DECLARE_INTERFACE_(IViewObject, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IViewObject methods *** + STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex, + void FAR* pvAspect, DVTARGETDEVICE FAR * ptd, + HDC hicTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + BOOL (CALLBACK * pfnContinue) (DWORD), + DWORD dwContinue) PURE; + + STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex, + void FAR* pvAspect, DVTARGETDEVICE FAR * ptd, + HDC hicTargetDev, + LPLOGPALETTE FAR* ppColorSet) PURE; + + STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, + void FAR* pvAspect, + DWORD FAR* pdwFreeze) PURE; + STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE; + STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf, + LPADVISESINK pAdvSink) PURE; + STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf, + LPADVISESINK FAR* ppAdvSink) PURE; +}; +typedef IViewObject FAR* LPVIEWOBJECT; + + +#undef INTERFACE +#define INTERFACE IViewObject2 + +DECLARE_INTERFACE_(IViewObject2, IViewObject) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IViewObject methods *** + STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex, + void FAR* pvAspect, DVTARGETDEVICE FAR * ptd, + HDC hicTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + BOOL (CALLBACK * pfnContinue) (DWORD), + DWORD dwContinue) PURE; + + STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex, + void FAR* pvAspect, DVTARGETDEVICE FAR * ptd, + HDC hicTargetDev, + LPLOGPALETTE FAR* ppColorSet) PURE; + + STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, + void FAR* pvAspect, + DWORD FAR* pdwFreeze) PURE; + STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE; + STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf, + LPADVISESINK pAdvSink) PURE; + STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf, + LPADVISESINK FAR* ppAdvSink) PURE; + + // *** IViewObject2 methods *** + STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LONG lindex, + DVTARGETDEVICE FAR * ptd, LPSIZEL lpsizel) PURE; + +}; +typedef IViewObject2 FAR* LPVIEWOBJECT2; + + +#undef INTERFACE +#define INTERFACE IAdviseSink + +DECLARE_INTERFACE_(IAdviseSink, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IAdviseSink methods *** + STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc, + STGMEDIUM FAR* pStgmed) PURE; + STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE; + STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE; + STDMETHOD_(void,OnSave)(THIS) PURE; + STDMETHOD_(void,OnClose)(THIS) PURE; +}; +typedef IAdviseSink FAR* LPADVISESINK; + + + +#undef INTERFACE +#define INTERFACE IAdviseSink2 + +DECLARE_INTERFACE_(IAdviseSink2, IAdviseSink) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IAdviseSink methods *** + STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc, + STGMEDIUM FAR* pStgmed) PURE; + STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE; + STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE; + STDMETHOD_(void,OnSave)(THIS) PURE; + STDMETHOD_(void,OnClose)(THIS) PURE; + + // *** IAdviseSink2 methods *** + STDMETHOD_(void,OnLinkSrcChange)(THIS_ LPMONIKER pmk) PURE; +}; +typedef IAdviseSink2 FAR* LPADVISESINK2; + + + +#undef INTERFACE +#define INTERFACE IDataAdviseHolder + +DECLARE_INTERFACE_(IDataAdviseHolder, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IDataAdviseHolder methods *** + STDMETHOD(Advise)(THIS_ LPDATAOBJECT pDataObject, FORMATETC FAR* pFetc, + DWORD advf, LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE; + STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE; + STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE; + + STDMETHOD(SendOnDataChange)(THIS_ LPDATAOBJECT pDataObject, DWORD dwReserved, DWORD advf) PURE; +}; +typedef IDataAdviseHolder FAR* LPDATAADVISEHOLDER; + + + +#undef INTERFACE +#define INTERFACE IOleCache + +#define CACHE_E_NOCACHE_UPDATED (CACHE_E_FIRST) + +#define CACHE_S_FORMATETC_NOTSUPPORTED (CACHE_S_FIRST) +#define CACHE_S_SAMECACHE (CACHE_S_FIRST+1) +#define CACHE_S_SOMECACHES_NOTUPDATED (CACHE_S_FIRST+2) + + +DECLARE_INTERFACE_(IOleCache, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleCache methods *** + STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE; + STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE; + STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE; + STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE; + STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium, + BOOL fRelease) PURE; +}; +typedef IOleCache FAR* LPOLECACHE; + + + +// Cache update Flags + +#define UPDFCACHE_NODATACACHE 0x00000001 +#define UPDFCACHE_ONSAVECACHE 0x00000002 +#define UPDFCACHE_ONSTOPCACHE 0x00000004 +#define UPDFCACHE_NORMALCACHE 0x00000008 +#define UPDFCACHE_IFBLANK 0x00000010 +#define UPDFCACHE_ONLYIFBLANK 0x80000000 + +#define UPDFCACHE_IFBLANKORONSAVECACHE (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE ) +#define UPDFCACHE_ALL (~UPDFCACHE_ONLYIFBLANK) +#define UPDFCACHE_ALLBUTNODATACACHE (UPDFCACHE_ALL & ~UPDFCACHE_NODATACACHE) + + +// IOleCache2::DiscardCache options +typedef enum tagDISCARDCACHE +{ + DISCARDCACHE_SAVEIFDIRTY = 0, // Save all dirty cache before discarding + DISCARDCACHE_NOSAVE = 1 // Don't save dirty caches before + // discarding +} DISCARDCACHE; + + +#undef INTERFACE +#define INTERFACE IOleCache2 + +DECLARE_INTERFACE_(IOleCache2, IOleCache) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + + // *** IOleCache methods *** + STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE; + STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE; + STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE; + STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE; + STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium, + BOOL fRelease) PURE; + + // *** IOleCache2 methods *** + STDMETHOD(UpdateCache) (THIS_ LPDATAOBJECT pDataObject, DWORD grfUpdf, + LPVOID pReserved) PURE; + STDMETHOD(DiscardCache) (THIS_ DWORD dwDiscardOptions) PURE; + +}; +typedef IOleCache2 FAR* LPOLECACHE2; + + +#undef INTERFACE +#define INTERFACE IOleCacheControl + +DECLARE_INTERFACE_(IOleCacheControl, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + + // *** IDataObject methods *** + STDMETHOD(OnRun) (THIS_ LPDATAOBJECT pDataObject) PURE; + STDMETHOD(OnStop) (THIS) PURE; +}; +typedef IOleCacheControl FAR* LPOLECACHECONTROL; + + + +/****** DV APIs ***********************************************************/ + + +STDAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder); + +STDAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, + REFIID iid, LPVOID FAR* ppv); + +#endif // _DVOBJ_H_ diff --git a/private/oleauto/ole/win16/initguid.h b/private/oleauto/ole/win16/initguid.h new file mode 100644 index 000000000..e7406e3c2 --- /dev/null +++ b/private/oleauto/ole/win16/initguid.h @@ -0,0 +1,38 @@ +/*****************************************************************************\ +* * +* initguid.h - Definitions for controlling GUID initialization * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + +// Include after compobj.h to enable GUID initialization. This +// must be done once per exe/dll. +// +// After this file, include one or more of the GUID definition files. +// +// NOTE: ole2.lib contains references to all GUIDs defined by OLE. + +#ifndef DEFINE_GUID +#pragma error "initguid: must include compobj.h first." +#endif + +#undef DEFINE_GUID + +#ifdef _MAC +#define __based(a) +#endif + +#ifdef WIN32 +#define __based(a) +#endif + +#ifdef __TURBOC__ +#define __based(a) +#endif + +#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + EXTERN_C const GUID CDECL __based(__segname("_CODE")) name \ + = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } diff --git a/private/oleauto/ole/win16/moniker.h b/private/oleauto/ole/win16/moniker.h new file mode 100644 index 000000000..0f1761ff8 --- /dev/null +++ b/private/oleauto/ole/win16/moniker.h @@ -0,0 +1,248 @@ +/*****************************************************************************\ +* * +* moniker.h - Moniker and related interfaces and APIs * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + + +#if !defined( _MONIKER_H_ ) +#define _MONIKER_H_ + +#define MK_E_CONNECTMANUALLY MK_E_FIRST +#define MK_E_EXCEEDEDDEADLINE (MK_E_FIRST + 1) +#define MK_E_NEEDGENERIC (MK_E_FIRST + 2) +#define MK_E_UNAVAILABLE (MK_E_FIRST + 3) +#define MK_E_SYNTAX (MK_E_FIRST + 4) +#define MK_E_NOOBJECT (MK_E_FIRST + 5) +#define MK_E_INVALIDEXTENSION (MK_E_FIRST + 6) +#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED (MK_E_FIRST + 7) +#define MK_E_NOTBINDABLE (MK_E_FIRST + 8) +#define MK_E_NOTBOUND (MK_E_FIRST + 9) + // called IBindCtx->RevokeObjectBound for an + // object which was not bound +#define MK_E_CANTOPENFILE (MK_E_FIRST + 10) +#define MK_E_MUSTBOTHERUSER (MK_E_FIRST + 11) +#define MK_E_NOINVERSE (MK_E_FIRST + 12) +#define MK_E_NOSTORAGE (MK_E_FIRST + 13) +#define MK_E_NOPREFIX (MK_E_FIRST + 14) + + +// reserved MK_S_FIRST +// reserved (MK_S_FIRST + 1) +#define MK_S_REDUCED_TO_SELF (MK_S_FIRST + 2) +// reserved (MK_S_FIRST + 3) +#define MK_S_ME (MK_S_FIRST + 4) +#define MK_S_HIM (MK_S_FIRST + 5) +#define MK_S_US (MK_S_FIRST + 6) +#define MK_S_MONIKERALREADYREGISTERED (MK_S_FIRST + 7) + + +// bind options; variable sized +typedef struct FARSTRUCT tagBIND_OPTS +{ + DWORD cbStruct; // sizeof(BIND_OPTS) + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; +} BIND_OPTS, FAR* LPBIND_OPTS; + + +// bind flags; controls binding; stored in bind options above +typedef enum +{ + BIND_MAYBOTHERUSER = 1, + BIND_JUSTTESTEXISTENCE = 2 +} BIND_FLAGS; + + +// system moniker types; returned from IsSystemMoniker. +typedef enum tagMKSYS +{ + MKSYS_NONE = 0, + MKSYS_GENERICCOMPOSITE = 1, + MKSYS_FILEMONIKER = 2, + MKSYS_ANTIMONIKER = 3, + MKSYS_ITEMMONIKER = 4, + MKSYS_POINTERMONIKER = 5 +}MKSYS; + + +// bit wise enum to control how much reduction takes place. +typedef enum tagMKREDUCE +{ + MKRREDUCE_ONE = 3<<16, + MKRREDUCE_TOUSER = 2<<16, + MKRREDUCE_THROUGHUSER = 1<<16, + MKRREDUCE_ALL = 0 +} MKRREDUCE; + + +#if defined(__cplusplus) +interface IEnumMoniker; +interface IRunningObjectTable; +#else +typedef interface IEnumMoniker IEnumMoniker; +typedef interface IRunningObjectTable IRunningObjectTable; +#endif + +typedef IEnumMoniker FAR* LPENUMMONIKER; +typedef IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE; + + + +#undef INTERFACE +#define INTERFACE IBindCtx + +DECLARE_INTERFACE_(IBindCtx, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IBindCtx methods *** + STDMETHOD(RegisterObjectBound) (THIS_ LPUNKNOWN punk) PURE; + STDMETHOD(RevokeObjectBound) (THIS_ LPUNKNOWN punk) PURE; + STDMETHOD(ReleaseBoundObjects) (THIS) PURE; + + STDMETHOD(SetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE; + STDMETHOD(GetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE; + STDMETHOD(GetRunningObjectTable) (THIS_ LPRUNNINGOBJECTTABLE FAR* + pprot) PURE; + STDMETHOD(RegisterObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN punk) PURE; + STDMETHOD(GetObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN FAR* ppunk) PURE; + STDMETHOD(EnumObjectParam) (THIS_ LPENUMSTRING FAR* ppenum) PURE; + STDMETHOD(RevokeObjectParam) (THIS_ LPSTR lpszKey) PURE; +}; +typedef IBindCtx FAR* LPBC; +typedef IBindCtx FAR* LPBINDCTX; + + + +#undef INTERFACE +#define INTERFACE IMoniker + +DECLARE_INTERFACE_(IMoniker, IPersistStream) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IPersist methods *** + STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE; + + // *** IPersistStream methods *** + STDMETHOD(IsDirty) (THIS) PURE; + STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE; + STDMETHOD(Save) (THIS_ LPSTREAM pStm, + BOOL fClearDirty) PURE; + STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR * pcbSize) PURE; + + // *** IMoniker methods *** + STDMETHOD(BindToObject) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, + REFIID riidResult, LPVOID FAR* ppvResult) PURE; + STDMETHOD(BindToStorage) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, + REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD(Reduce) (THIS_ LPBC pbc, DWORD dwReduceHowFar, LPMONIKER FAR* + ppmkToLeft, LPMONIKER FAR * ppmkReduced) PURE; + STDMETHOD(ComposeWith) (THIS_ LPMONIKER pmkRight, BOOL fOnlyIfNotGeneric, + LPMONIKER FAR* ppmkComposite) PURE; + STDMETHOD(Enum) (THIS_ BOOL fForward, LPENUMMONIKER FAR* ppenumMoniker) + PURE; + STDMETHOD(IsEqual) (THIS_ LPMONIKER pmkOtherMoniker) PURE; + STDMETHOD(Hash) (THIS_ LPDWORD pdwHash) PURE; + STDMETHOD(IsRunning) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPMONIKER + pmkNewlyRunning) PURE; + STDMETHOD(GetTimeOfLastChange) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, + FILETIME FAR* pfiletime) PURE; + STDMETHOD(Inverse) (THIS_ LPMONIKER FAR* ppmk) PURE; + STDMETHOD(CommonPrefixWith) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR* + ppmkPrefix) PURE; + STDMETHOD(RelativePathTo) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR* + ppmkRelPath) PURE; + STDMETHOD(GetDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, + LPSTR FAR* lplpszDisplayName) PURE; + STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, + LPSTR lpszDisplayName, ULONG FAR* pchEaten, + LPMONIKER FAR* ppmkOut) PURE; + STDMETHOD(IsSystemMoniker) (THIS_ LPDWORD pdwMksys) PURE; +}; +typedef IMoniker FAR* LPMONIKER; + + +// IRunningObjectTable::Register flags +#define ROTFLAGS_REGISTRATIONKEEPSALIVE 1 + +#undef INTERFACE +#define INTERFACE IRunningObjectTable + +DECLARE_INTERFACE_(IRunningObjectTable, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IRunningObjectTable methods *** + STDMETHOD(Register) (THIS_ DWORD grfFlags, LPUNKNOWN punkObject, + LPMONIKER pmkObjectName, DWORD FAR * pdwRegister) PURE; + STDMETHOD(Revoke) (THIS_ DWORD dwRegister) PURE; + STDMETHOD(IsRunning) (THIS_ LPMONIKER pmkObjectName) PURE; + STDMETHOD(GetObject) (THIS_ LPMONIKER pmkObjectName, + LPUNKNOWN FAR* ppunkObject) PURE; + STDMETHOD(NoteChangeTime) (THIS_ DWORD dwRegister, FILETIME FAR * pfiletime) PURE; + STDMETHOD(GetTimeOfLastChange) (THIS_ LPMONIKER pmkObjectName, FILETIME FAR * pfiletime) PURE; + STDMETHOD(EnumRunning) (THIS_ LPENUMMONIKER FAR * ppenumMoniker ) PURE; +}; +typedef IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE; + + + +#undef INTERFACE +#define INTERFACE IEnumMoniker + +DECLARE_INTERFACE_(IEnumMoniker, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IEnumOleDataObject methods *** + STDMETHOD(Next) (THIS_ ULONG celt, LPMONIKER FAR* rgelt, ULONG FAR* pceltFetched) PURE; + STDMETHOD(Skip) (THIS_ ULONG celt) PURE; + STDMETHOD(Reset) (THIS) PURE; + STDMETHOD(Clone) (THIS_ IEnumMoniker FAR* FAR* ppenm) PURE; +}; +typedef IEnumMoniker FAR* LPENUMMONIKER; + + + + +STDAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID FAR* ppvResult); +STDAPI MkParseDisplayName(LPBC pbc, LPSTR szUserName, + ULONG FAR * pchEaten, LPMONIKER FAR * ppmk); +STDAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER + FAR* ppmkRelPath, BOOL fCalledFromMethod); +STDAPI MonikerCommonPrefixWith(LPMONIKER pmkThis, LPMONIKER pmkOther, + LPMONIKER FAR* ppmkCommon); +STDAPI CreateBindCtx(DWORD reserved, LPBC FAR* ppbc); +STDAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, + LPMONIKER FAR* ppmkComposite); +STDAPI GetClassFile (LPCSTR szFilename, CLSID FAR* pclsid); + +STDAPI CreateFileMoniker(LPSTR lpszPathName, LPMONIKER FAR* ppmk); +STDAPI CreateItemMoniker(LPSTR lpszDelim, LPSTR lpszItem, + LPMONIKER FAR* ppmk); +STDAPI CreateAntiMoniker(LPMONIKER FAR* ppmk); +STDAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER FAR* ppmk); + +STDAPI GetRunningObjectTable( DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot); + + +#endif // _MONIKER_H_ diff --git a/private/oleauto/ole/win16/ole1cls.h b/private/oleauto/ole/win16/ole1cls.h new file mode 100644 index 000000000..eeae62ba4 --- /dev/null +++ b/private/oleauto/ole/win16/ole1cls.h @@ -0,0 +1,141 @@ +/*****************************************************************************\ +* * +* ole1cls.h - Master definition of GUIDs for OLE1 classes * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + +/* This file is the master definition of all GUIDs for OLE1 classes. + + All such GUIDs are of the form: + + 0003xxxx-0000-0000-C000-000000000046 + + The last parameter to DEFINE_OLE1GUID is the old 1.0 class name, + i.e., its key in the registration database. + + Do not remove or change GUIDs. + + Do not add anything to this file except comments and DEFINE_OLE1GUID macros. +*/ + +#ifndef DEFINE_OLE1GUID +#define DEFINE_OLE1GUID(a,b,c,d,e) DEFINE_OLEGUID (a,b,c,d) +#endif + +DEFINE_OLE1GUID(CLSID_ExcelWorksheet, 0x00030000, 0, 0, "ExcelWorksheet"); +DEFINE_OLE1GUID(CLSID_ExcelChart, 0x00030001, 0, 0, "ExcelChart"); +DEFINE_OLE1GUID(CLSID_ExcelMacrosheet, 0x00030002, 0, 0, "ExcelMacrosheet"); +DEFINE_OLE1GUID(CLSID_WordDocument, 0x00030003, 0, 0, "WordDocument"); +DEFINE_OLE1GUID(CLSID_MSPowerPoint, 0x00030004, 0, 0, "MSPowerPoint"); +DEFINE_OLE1GUID(CLSID_MSPowerPointSho, 0x00030005, 0, 0, "MSPowerPointSho"); +DEFINE_OLE1GUID(CLSID_MSGraph, 0x00030006, 0, 0, "MSGraph"); +DEFINE_OLE1GUID(CLSID_MSDraw, 0x00030007, 0, 0, "MSDraw"); +DEFINE_OLE1GUID(CLSID_Note_It, 0x00030008, 0, 0, "Note-It"); +DEFINE_OLE1GUID(CLSID_WordArt, 0x00030009, 0, 0, "WordArt"); +DEFINE_OLE1GUID(CLSID_PBrush, 0x0003000a, 0, 0, "PBrush"); +DEFINE_OLE1GUID(CLSID_Equation, 0x0003000b, 0, 0, "Equation"); +DEFINE_OLE1GUID(CLSID_Package, 0x0003000c, 0, 0, "Package"); +DEFINE_OLE1GUID(CLSID_SoundRec, 0x0003000d, 0, 0, "SoundRec"); +DEFINE_OLE1GUID(CLSID_MPlayer, 0x0003000e, 0, 0, "MPlayer"); + +/* test apps */ +DEFINE_OLE1GUID(CLSID_ServerDemo, 0x0003000f, 0, 0, "ServerDemo"); +DEFINE_OLE1GUID(CLSID_Srtest, 0x00030010, 0, 0, "Srtest"); +DEFINE_OLE1GUID(CLSID_SrtInv, 0x00030011, 0, 0, "SrtInv"); +DEFINE_OLE1GUID(CLSID_OleDemo, 0x00030012, 0, 0, "OleDemo"); + +/* External ISVs */ +// Coromandel / Dorai Swamy / 718-793-7963 +DEFINE_OLE1GUID(CLSID_CoromandelIntegra, 0x00030013, 0, 0, "CoromandelIntegra"); +DEFINE_OLE1GUID(CLSID_CoromandelObjServer,0x00030014, 0, 0, "CoromandelObjServer"); + +// 3-d Visions Corp / Peter Hirsch / 310-325-1339 +DEFINE_OLE1GUID(CLSID_StanfordGraphics, 0x00030015, 0, 0, "StanfordGraphics"); + +// Deltapoint / Nigel Hearne / 408-648-4000 +DEFINE_OLE1GUID(CLSID_DGraphCHART, 0x00030016, 0, 0, "DGraphCHART"); +DEFINE_OLE1GUID(CLSID_DGraphDATA, 0x00030017, 0, 0, "DGraphDATA"); + +// Corel / Richard V. Woodend / 613-728-8200 x1153 +DEFINE_OLE1GUID(CLSID_PhotoPaint, 0x00030018, 0, 0, "PhotoPaint"); +DEFINE_OLE1GUID(CLSID_CShow, 0x00030019, 0, 0, "CShow"); +DEFINE_OLE1GUID(CLSID_CorelChart, 0x0003001a, 0, 0, "CorelChart"); +DEFINE_OLE1GUID(CLSID_CDraw, 0x0003001b, 0, 0, "CDraw"); + +// Inset Systems / Mark Skiba / 203-740-2400 +DEFINE_OLE1GUID(CLSID_HJWIN1_0, 0x0003001c, 0, 0, "HJWIN1.0"); + +// Mark V Systems / Mark McGraw / 818-995-7671 +DEFINE_OLE1GUID(CLSID_ObjMakerOLE, 0x0003001d, 0, 0, "ObjMakerOLE"); + +// IdentiTech / Mike Gilger / 407-951-9503 +DEFINE_OLE1GUID(CLSID_FYI, 0x0003001e, 0, 0, "FYI"); +DEFINE_OLE1GUID(CLSID_FYIView, 0x0003001f, 0, 0, "FYIView"); + +// Inventa Corporation / Balaji Varadarajan / 408-987-0220 +DEFINE_OLE1GUID(CLSID_Stickynote, 0x00030020, 0, 0, "Stickynote"); + +// ShapeWare Corp. / Lori Pearce / 206-467-6723 +DEFINE_OLE1GUID(CLSID_ShapewareVISIO10, 0x00030021, 0, 0, "ShapewareVISIO10"); +DEFINE_OLE1GUID(CLSID_ImportServer, 0x00030022, 0, 0, "ImportServer"); + + +// test app SrTest +DEFINE_OLE1GUID(CLSID_SrvrTest, 0x00030023, 0, 0, "SrvrTest"); + +// Special clsid for when a 1.0 client pastes an embedded object +// that is a link. +// **This CLSID is obsolete. Do not reuse number. +//DEFINE_OLE1GUID(CLSID_10EmbedObj, 0x00030024, 0, 0, "OLE2_Embedded_Link"); + +// test app ClTest. Doesn't really work as a server but is in reg db +DEFINE_OLE1GUID(CLSID_ClTest, 0x00030025, 0, 0, "Cltest"); + +// Microsoft ClipArt Gallery Sherry Larsen-Holmes +DEFINE_OLE1GUID(CLSID_MS_ClipArt_Gallery,0x00030026, 0, 0, "MS_ClipArt_Gallery"); + +// Microsoft Project Cory Reina +DEFINE_OLE1GUID(CLSID_MSProject, 0x00030027, 0, 0, "MSProject"); + +// Microsoft Works Chart +DEFINE_OLE1GUID(CLSID_MSWorksChart, 0x00030028, 0, 0, "MSWorksChart"); + +// Microsoft Works Spreadsheet +DEFINE_OLE1GUID(CLSID_MSWorksSpreadsheet,0x00030029, 0, 0, "MSWorksSpreadsheet"); + +// AFX apps - Dean McCrory +DEFINE_OLE1GUID(CLSID_MinSvr, 0x0003002A, 0, 0, "MinSvr"); +DEFINE_OLE1GUID(CLSID_HierarchyList, 0x0003002B, 0, 0, "HierarchyList"); +DEFINE_OLE1GUID(CLSID_BibRef, 0x0003002C, 0, 0, "BibRef"); +DEFINE_OLE1GUID(CLSID_MinSvrMI, 0x0003002D, 0, 0, "MinSvrMI"); +DEFINE_OLE1GUID(CLSID_TestServ, 0x0003002E, 0, 0, "TestServ"); + +// Ami Pro +DEFINE_OLE1GUID(CLSID_AmiProDocument, 0x0003002F, 0, 0, "AmiProDocument"); + +// WordPerfect Presentations For Windows +DEFINE_OLE1GUID(CLSID_WPGraphics, 0x00030030, 0, 0, "WPGraphics"); +DEFINE_OLE1GUID(CLSID_WPCharts, 0x00030031, 0, 0, "WPCharts"); + + +// MicroGrafx Charisma +DEFINE_OLE1GUID(CLSID_Charisma, 0x00030032, 0, 0, "Charisma"); +DEFINE_OLE1GUID(CLSID_Charisma_30, 0x00030033, 0, 0, "Charisma_30"); +DEFINE_OLE1GUID(CLSID_CharPres_30, 0x00030034, 0, 0, "CharPres_30"); + +// MicroGrafx Draw +DEFINE_OLE1GUID(CLSID_Draw, 0x00030035, 0, 0, "Draw"); + +// MicroGrafx Designer +DEFINE_OLE1GUID(CLSID_Designer_40, 0x00030036, 0, 0, "Designer_40"); + + +#undef DEFINE_OLE1GUID + +/* as we discover OLE 1 servers we will add them to the end of this list; + there is room for 64K of them! +*/ diff --git a/private/oleauto/ole/win16/ole2.h b/private/oleauto/ole/win16/ole2.h new file mode 100644 index 000000000..c5daea6f0 --- /dev/null +++ b/private/oleauto/ole/win16/ole2.h @@ -0,0 +1,1336 @@ +/*****************************************************************************\ +* * +* ole2.h - Main OLE2 header; includes all subcomponents * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + + +#if !defined( _OLE2_H_ ) +#define _OLE2_H_ + +#ifndef RC_INVOKED +#pragma warning(disable:4001) +#endif /* RC_INVOKED */ + +#include <string.h> + +/****** Standard Object Definitions *****************************************/ + +#include <compobj.h> + + +// *************** FACILITY_ITF scodes common to all interfaces ************ +// +// By convention, OLE interfaces divide the FACILITY_ITF range of errors +// into nonoverlapping subranges. If an interface returns a FACILITY_ITF +// scode, it must be from the range associated with that interface or from +// the shared range: OLE_E_FIRST...OLE_E_LAST. +// + +// error codes + +#define OLE_E_OLEVERB (OLE_E_FIRST) +// invalid OLEVERB structure + +#define OLE_E_ADVF (OLE_E_FIRST+1) +// invalid advise flags + +#define OLE_E_ENUM_NOMORE (OLE_E_FIRST+2) +// you can't enuemrate any more, because the associated data is missing + +#define OLE_E_ADVISENOTSUPPORTED (OLE_E_FIRST+3) +// this implementation doesn't take advises + +#define OLE_E_NOCONNECTION (OLE_E_FIRST+4) +// there is no connection for this connection id + +#define OLE_E_NOTRUNNING (OLE_E_FIRST+5) +// need run the object to perform this operation + +#define OLE_E_NOCACHE (OLE_E_FIRST+6) +// there is no cache to operate on + +#define OLE_E_BLANK (OLE_E_FIRST+7) +// Uninitialized object + +#define OLE_E_CLASSDIFF (OLE_E_FIRST+8) +// linked object's source class has changed + +#define OLE_E_CANT_GETMONIKER (OLE_E_FIRST+9) +// not able to get the moniker of the object + +#define OLE_E_CANT_BINDTOSOURCE (OLE_E_FIRST+10) +// not able to bind to the source + +#define OLE_E_STATIC (OLE_E_FIRST+11) +// object is static, operation not allowed + +#define OLE_E_PROMPTSAVECANCELLED (OLE_E_FIRST+12) +// user cancelled out of save dialog + +#define OLE_E_INVALIDRECT (OLE_E_FIRST+13) +// invalid rectangle + +#define OLE_E_WRONGCOMPOBJ (OLE_E_FIRST+14) +// compobj.dll is too old for the ole2.dll initialized + +#define OLE_E_INVALIDHWND (OLE_E_FIRST+15) +// invalid window handle + +#define OLE_E_NOT_INPLACEACTIVE (OLE_E_FIRST+16) +// object is not in any of the inplace active states + +#define OLE_E_CANTCONVERT (OLE_E_FIRST+17) +// not able to convert the object + +#define OLE_E_NOSTORAGE (OLE_E_FIRST+18) +// not able to perform the operation because object is not given storage yet. + + +#define DVGEN_E_FIRST (OLE_E_FIRST+100) + +#define DV_E_FORMATETC (DVGEN_E_FIRST) +// invalid FORMATETC structure + +#define DV_E_DVTARGETDEVICE (DVGEN_E_FIRST+1) +// invalid DVTARGETDEVICE structure + +#define DV_E_STGMEDIUM (DVGEN_E_FIRST+2) +// invalid STDGMEDIUM structure + +#define DV_E_STATDATA (DVGEN_E_FIRST+3) +// invalid STATDATA structure + +#define DV_E_LINDEX (DVGEN_E_FIRST+4) +// invalid lindex + +#define DV_E_TYMED (DVGEN_E_FIRST+5) +// invalid tymed + +#define DV_E_CLIPFORMAT (DVGEN_E_FIRST+6) +// invalid clipboard format + +#define DV_E_DVASPECT (DVGEN_E_FIRST+7) +// invalid aspect(s) + +#define DV_E_DVTARGETDEVICE_SIZE (DVGEN_E_FIRST+8) +// tdSize paramter of the DVTARGETDEVICE structure is invalid + +#define DV_E_NOIVIEWOBJECT (DVGEN_E_FIRST+9) +// object doesn't support IViewObject interface + + +// Success codes + +#define OLE_S_USEREG (OLE_S_FIRST) +// use the reg database to provide the requested info + +#define OLE_S_STATIC (OLE_S_FIRST+1) +// success, but static + +#define OLE_S_MAC_CLIPFORMAT (OLE_S_FIRST+2) +// macintosh clipboard format + +//*************************** Interface or API specific scodes ************* + +// Errors for OleConvertOLESTREAMToIStorage and OleConvertIStorageToOLESTREAM + +// OLESTREAM Get method failed +#define CONVERT10_E_OLESTREAM_GET (CONVERT10_E_FIRST + 0) + +// OLESTREAM Put method failed +#define CONVERT10_E_OLESTREAM_PUT (CONVERT10_E_FIRST + 1) + +// Contents of the OLESTREAM not in correct format +#define CONVERT10_E_OLESTREAM_FMT (CONVERT10_E_FIRST + 2) + +// There was in an error in a Windows GDI call while converting the bitmap +// to a DIB. +#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB (CONVERT10_E_FIRST + 3) + +// Contents of the IStorage not in correct format +#define CONVERT10_E_STG_FMT (CONVERT10_E_FIRST + 4) + +// Contents of IStorage is missing one of the standard streams ("\1CompObj", +// "\1Ole", "\2OlePres000"). This may be the storage for a DLL object, or a +// class that does not use the def handler. +#define CONVERT10_E_STG_NO_STD_STREAM (CONVERT10_E_FIRST + 5) + +// There was in an error in a Windows GDI call while converting the DIB +// to a bitmap. +#define CONVERT10_E_STG_DIB_TO_BITMAP (CONVERT10_E_FIRST + 6) + + +// Returned by either API, this scode indicates that the original object +// had no presentation, therefore the converted object does not either. +#define CONVERT10_S_NO_PRESENTATION (CONVERT10_S_FIRST + 0) + + +// Errors for Clipboard functions + +// OpenClipboard Failed +#define CLIPBRD_E_CANT_OPEN (CLIPBRD_E_FIRST + 0) + +// EmptyClipboard Failed +#define CLIPBRD_E_CANT_EMPTY (CLIPBRD_E_FIRST + 1) + +// SetClipboard Failed +#define CLIPBRD_E_CANT_SET (CLIPBRD_E_FIRST + 2) + +// Data on clipboard is invalid +#define CLIPBRD_E_BAD_DATA (CLIPBRD_E_FIRST + 3) + +// CloseClipboard Failed +#define CLIPBRD_E_CANT_CLOSE (CLIPBRD_E_FIRST + 4) + + +/****** OLE value types *****************************************************/ + +/* rendering options */ +typedef enum tagOLERENDER +{ + OLERENDER_NONE = 0, + OLERENDER_DRAW = 1, + OLERENDER_FORMAT = 2, + OLERENDER_ASIS = 3 +} OLERENDER; +typedef OLERENDER FAR* LPOLERENDER; + +// OLE verb; returned by IEnumOLEVERB +typedef struct FARSTRUCT tagOLEVERB +{ + LONG lVerb; + LPSTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; +} OLEVERB, FAR* LPOLEVERB; + + +// Bitwise verb attributes used in OLEVERB.grfAttribs +typedef enum tagOLEVERBATTRIB // bitwise +{ + OLEVERBATTRIB_NEVERDIRTIES = 1, + OLEVERBATTRIB_ONCONTAINERMENU = 2 +} OLEVERBATTRIB; + + +// IOleObject::GetUserType optons; determines which form of the string to use +typedef enum tagUSERCLASSTYPE +{ + USERCLASSTYPE_FULL = 1, + USERCLASSTYPE_SHORT= 2, + USERCLASSTYPE_APPNAME= 3, +} USERCLASSTYPE; + + +// bits returned from IOleObject::GetMistStatus +typedef enum tagOLEMISC // bitwise +{ + OLEMISC_RECOMPOSEONRESIZE = 1, + OLEMISC_ONLYICONIC = 2, + OLEMISC_INSERTNOTREPLACE = 4, + OLEMISC_STATIC = 8, + OLEMISC_CANTLINKINSIDE = 16, + OLEMISC_CANLINKBYOLE1 = 32, + OLEMISC_ISLINKOBJECT = 64, + OLEMISC_INSIDEOUT = 128, + OLEMISC_ACTIVATEWHENVISIBLE = 256, + OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512 +} OLEMISC; + + +// IOleObject::Close options +typedef enum tagOLECLOSE +{ + OLECLOSE_SAVEIFDIRTY = 0, + OLECLOSE_NOSAVE = 1, + OLECLOSE_PROMPTSAVE = 2 +} OLECLOSE; + + +// IOleObject::GetMoniker and IOleClientSite::GetMoniker options; determines +// if and how monikers should be assigned. +typedef enum tagOLEGETMONIKER +{ + OLEGETMONIKER_ONLYIFTHERE=1, + OLEGETMONIKER_FORCEASSIGN=2, + OLEGETMONIKER_UNASSIGN=3, + OLEGETMONIKER_TEMPFORUSER=4 +} OLEGETMONIKER; + + +// IOleObject::GetMoniker, IOleObject::SetMoniker and +// IOleClientSite::GetMoniker options; determines which moniker to use +typedef enum tagOLEWHICHMK +{ + OLEWHICHMK_CONTAINER=1, + OLEWHICHMK_OBJREL=2, + OLEWHICHMK_OBJFULL=3 +} OLEWHICHMK; + + +#ifdef WIN32 +#define LPSIZEL PSIZEL +#else +typedef struct FARSTRUCT tagSIZEL +{ + long cx; + long cy; +} SIZEL, FAR* LPSIZEL; +#endif + + +#ifdef WIN32 +#define LPRECTL PRECTL +#else +typedef struct FARSTRUCT tagRECTL +{ + long left; + long top; + long right; + long bottom; +} RECTL, FAR* LPRECTL; + +typedef struct FARSTRUCT tagPOINTL { + LONG x; + LONG y; +} POINTL; + +#endif + + +#ifndef LPCRECT +typedef const RECT FAR* LPCRECT; +#endif + +#ifndef LPCRECTL +typedef const RECTL FAR* LPCRECTL; +#endif + + +// for OleCreateEmbeddingHelper flags; roles in low word; options in high word +#define EMBDHLP_INPROC_HANDLER 0x0000L // role is handler; implementation is + // default handler; pCF can be NULL +#define EMBDHLP_INPROC_SERVER 0x0001L // role is server; pCF can't be NULL + +#define EMBDHLP_CREATENOW 0x00000000L // create using pCF immediately; if pCF + // is NULL, uses std remoting handler +#define EMBDHLP_DELAYCREATE 0x00010000L // delayed create; must supply pCF + + +// NOTE: OleCreateEmbeddingHelper(clsid, pUnkOuter, +// EMBDHLP_INPROC_HANDLER | EMBDHLP_CREATENOW, NULL, riid, lplpObj) +// is the same as OleCreateDefaultHandler(clsid, pUnkOuter, riid, lplpObj); +// i.e., the embedding helper is the default handler in various roles. + + +/***** OLE 1.0 OLESTREAM declarations *************************************/ + +typedef struct _OLESTREAM FAR* LPOLESTREAM; + +typedef struct _OLESTREAMVTBL +{ + DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD); + DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD); +} OLESTREAMVTBL; +typedef OLESTREAMVTBL FAR* LPOLESTREAMVTBL; + +typedef struct _OLESTREAM +{ + LPOLESTREAMVTBL lpstbl; +} OLESTREAM; + + +/****** Clipboard Data structures *****************************************/ + +typedef struct tagOBJECTDESCRIPTOR +{ + ULONG cbSize; // Size of structure in bytes + CLSID clsid; // CLSID of data being transferred + DWORD dwDrawAspect; // Display aspect of the object + // normally DVASPECT_CONTENT or ICON. + // dwDrawAspect will be 0 (which is NOT + // DVASPECT_CONTENT) if the copier or + // dragsource didn't draw the object to + // begin with. + SIZEL sizel; // size of the object in HIMETRIC + // sizel is opt.: will be (0,0) for apps + // which don't draw the object being + // transferred + POINTL pointl; // Offset in HIMETRIC units from the + // upper-left corner of the obj where the + // mouse went down for the drag. + // NOTE: y coordinates increase downward. + // x coordinates increase to right + // pointl is opt.; it is only meaningful + // if object is transfered via drag/drop. + // (0, 0) if mouse position is unspecified + // (eg. when obj transfered via clipboard) + DWORD dwStatus; // Misc. status flags for object. Flags are + // defined by OLEMISC enum. these flags + // are as would be returned + // by IOleObject::GetMiscStatus. + DWORD dwFullUserTypeName; // Offset from beginning of structure to + // null-terminated string that specifies + // Full User Type Name of the object. + // 0 indicates string not present. + DWORD dwSrcOfCopy; // Offset from beginning of structure to + // null-terminated string that specifies + // source of the transfer. + // dwSrcOfCOpy is normally implemented as + // the display name of the temp-for-user + // moniker which identifies the source of + // the data. + // 0 indicates string not present. + // NOTE: moniker assignment is NOT forced. + // see IOleObject::GetMoniker( + // OLEGETMONIKER_TEMPFORUSER) + + /* variable sized string data may appear here */ + +} OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, FAR *LPOBJECTDESCRIPTOR, + LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, FAR *LPLINKSRCDESCRIPTOR; + + + +/* verbs */ +#define OLEIVERB_PRIMARY (0L) +#define OLEIVERB_SHOW (-1L) +#define OLEIVERB_OPEN (-2L) +#define OLEIVERB_HIDE (-3L) +#define OLEIVERB_UIACTIVATE (-4L) +#define OLEIVERB_INPLACEACTIVATE (-5L) +#define OLEIVERB_DISCARDUNDOSTATE (-6L) + + +// forward type declarations +#if defined(__cplusplus) +interface IOleClientSite; +interface IOleContainer; +interface IOleObject; +#else +typedef interface IOleClientSite IOleClientSite; +typedef interface IOleContainer IOleContainer; +typedef interface IOleObject IOleObject; +#endif + +typedef IOleObject FAR* LPOLEOBJECT; +typedef IOleClientSite FAR* LPOLECLIENTSITE; +typedef IOleContainer FAR* LPOLECONTAINER; + + +/****** OLE GUIDs *********************************************************/ + +#ifndef INITGUID +#include "oleguid.h" +#endif + + +/****** Other Major Interfaces ********************************************/ + +#include <dvobj.h> + +#include <storage.h> + + + +/****** IDrop??? Interfaces ********************************************/ + +#define MK_ALT 0x0020 + + +#define DROPEFFECT_NONE 0 +#define DROPEFFECT_COPY 1 +#define DROPEFFECT_MOVE 2 +#define DROPEFFECT_LINK 4 +#define DROPEFFECT_SCROLL 0x80000000 + +// default inset-width of the hot zone, in pixels +// typical use: GetProfileInt("windows","DragScrollInset",DD_DEFSCROLLINSET) +#define DD_DEFSCROLLINSET 11 + +// default delay before scrolling, in milliseconds +// typical use: GetProfileInt("windows","DragScrollDelay",DD_DEFSCROLLDELAY) +#define DD_DEFSCROLLDELAY 50 + +// default scroll interval, in milliseconds +// typical use: GetProfileInt("windows","DragScrollInterval", +// DD_DEFSCROLLINTERVAL) +#define DD_DEFSCROLLINTERVAL 50 + +// default delay before dragging should start, in milliseconds +// typical use: GetProfileInt("windows", "DragDelay", DD_DEFDRAGDELAY) +#define DD_DEFDRAGDELAY 200 + +// default minimum distance (radius) before dragging should start, in pixels +// typical use: GetProfileInt("windows", "DragMinDist", DD_DEFDRAGMINDIST) +#define DD_DEFDRAGMINDIST 2 + + + +/* Dragdrop specific error codes */ + +#define DRAGDROP_E_NOTREGISTERED (DRAGDROP_E_FIRST) +// trying to revoke a drop target that has not been registered + +#define DRAGDROP_E_ALREADYREGISTERED (DRAGDROP_E_FIRST+1) +// this window has already been registered as a drop target + +#define DRAGDROP_E_INVALIDHWND (DRAGDROP_E_FIRST+2) +// invalid HWND + + +#define DRAGDROP_S_DROP (DRAGDROP_S_FIRST + 0) +// successful drop took place + +#define DRAGDROP_S_CANCEL (DRAGDROP_S_FIRST + 1) +// drag-drop operation canceled + +#define DRAGDROP_S_USEDEFAULTCURSORS (DRAGDROP_S_FIRST + 2) +// use the default cursor + + +#undef INTERFACE +#define INTERFACE IDropTarget + +DECLARE_INTERFACE_(IDropTarget, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IDropTarget methods *** + STDMETHOD(DragEnter) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE; + STDMETHOD(DragOver) (THIS_ DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE; + STDMETHOD(DragLeave) (THIS) PURE; + STDMETHOD(Drop) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE; +}; +typedef IDropTarget FAR* LPDROPTARGET; + + + +#undef INTERFACE +#define INTERFACE IDropSource + +DECLARE_INTERFACE_(IDropSource, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IDropSource methods *** + STDMETHOD(QueryContinueDrag) (THIS_ BOOL fEscapePressed, DWORD grfKeyState) PURE; + STDMETHOD(GiveFeedback) (THIS_ DWORD dwEffect) PURE; +}; +typedef IDropSource FAR* LPDROPSOURCE; + + + +/****** IPersist??? Interfaces ********************************************/ + + +#undef INTERFACE +#define INTERFACE IPersist + +DECLARE_INTERFACE_(IPersist, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IPersist methods *** + STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE; +}; +typedef IPersist FAR* LPPERSIST; + + + +#undef INTERFACE +#define INTERFACE IPersistStorage + +DECLARE_INTERFACE_(IPersistStorage, IPersist) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IPersist methods *** + STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE; + + // *** IPersistStorage methods *** + STDMETHOD(IsDirty) (THIS) PURE; + STDMETHOD(InitNew) (THIS_ LPSTORAGE pStg) PURE; + STDMETHOD(Load) (THIS_ LPSTORAGE pStg) PURE; + STDMETHOD(Save) (THIS_ LPSTORAGE pStgSave, BOOL fSameAsLoad) PURE; + STDMETHOD(SaveCompleted) (THIS_ LPSTORAGE pStgNew) PURE; + STDMETHOD(HandsOffStorage) (THIS) PURE; +}; +typedef IPersistStorage FAR* LPPERSISTSTORAGE; + + + +#undef INTERFACE +#define INTERFACE IPersistStream + +DECLARE_INTERFACE_(IPersistStream, IPersist) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IPersist methods *** + STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE; + + // *** IPersistStream methods *** + STDMETHOD(IsDirty) (THIS) PURE; + STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE; + STDMETHOD(Save) (THIS_ LPSTREAM pStm, + BOOL fClearDirty) PURE; + STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR* pcbSize) PURE; +}; +typedef IPersistStream FAR* LPPERSISTSTREAM; + + + +#undef INTERFACE +#define INTERFACE IPersistFile + +DECLARE_INTERFACE_(IPersistFile, IPersist) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IPersist methods *** + STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE; + + // *** IPersistFile methods *** + STDMETHOD(IsDirty) (THIS) PURE; + STDMETHOD(Load) (THIS_ LPCSTR lpszFileName, DWORD grfMode) PURE; + STDMETHOD(Save) (THIS_ LPCSTR lpszFileName, BOOL fRemember) PURE; + STDMETHOD(SaveCompleted) (THIS_ LPCSTR lpszFileName) PURE; + STDMETHOD(GetCurFile) (THIS_ LPSTR FAR* lplpszFileName) PURE; +}; +typedef IPersistFile FAR* LPPERSISTFILE; + + +/****** Moniker Object Interfaces ******************************************/ + +#include <moniker.h> + + +/****** OLE Object Interfaces ******************************************/ + + +#undef INTERFACE +#define INTERFACE IEnumOLEVERB + +DECLARE_INTERFACE_(IEnumOLEVERB, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IEnumOLEVERB methods *** + STDMETHOD(Next) (THIS_ ULONG celt, LPOLEVERB rgelt, ULONG FAR* pceltFetched) PURE; + STDMETHOD(Skip) (THIS_ ULONG celt) PURE; + STDMETHOD(Reset) (THIS) PURE; + STDMETHOD(Clone) (THIS_ IEnumOLEVERB FAR* FAR* ppenm) PURE; +}; +typedef IEnumOLEVERB FAR* LPENUMOLEVERB; + + + + +#undef INTERFACE +#define INTERFACE IOleObject + +#define OLEOBJ_E_NOVERBS (OLEOBJ_E_FIRST + 0) + +#define OLEOBJ_E_INVALIDVERB (OLEOBJ_E_FIRST + 1) + +#define OLEOBJ_S_INVALIDVERB (OLEOBJ_S_FIRST + 0) + +#define OLEOBJ_S_CANNOT_DOVERB_NOW (OLEOBJ_S_FIRST + 1) +// verb number is valid but verb cannot be done now, for instance +// hiding a link or hiding a visible OLE 1.0 server + +#define OLEOBJ_S_INVALIDHWND (OLEOBJ_S_FIRST + 2) +// invalid hwnd passed + + +DECLARE_INTERFACE_(IOleObject, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleObject methods *** + STDMETHOD(SetClientSite) (THIS_ LPOLECLIENTSITE pClientSite) PURE; + STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR* ppClientSite) PURE; + STDMETHOD(SetHostNames) (THIS_ LPCSTR szContainerApp, LPCSTR szContainerObj) PURE; + STDMETHOD(Close) (THIS_ DWORD dwSaveOption) PURE; + STDMETHOD(SetMoniker) (THIS_ DWORD dwWhichMoniker, LPMONIKER pmk) PURE; + STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker, + LPMONIKER FAR* ppmk) PURE; + STDMETHOD(InitFromData) (THIS_ LPDATAOBJECT pDataObject, + BOOL fCreation, + DWORD dwReserved) PURE; + STDMETHOD(GetClipboardData) (THIS_ DWORD dwReserved, + LPDATAOBJECT FAR* ppDataObject) PURE; + STDMETHOD(DoVerb) (THIS_ LONG iVerb, + LPMSG lpmsg, + LPOLECLIENTSITE pActiveSite, + LONG lindex, + HWND hwndParent, + LPCRECT lprcPosRect) PURE; + STDMETHOD(EnumVerbs) (THIS_ LPENUMOLEVERB FAR* ppenumOleVerb) PURE; + STDMETHOD(Update) (THIS) PURE; + STDMETHOD(IsUpToDate) (THIS) PURE; + STDMETHOD(GetUserClassID) (THIS_ CLSID FAR* pClsid) PURE; + STDMETHOD(GetUserType) (THIS_ DWORD dwFormOfType, LPSTR FAR* pszUserType) PURE; + STDMETHOD(SetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE; + STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE; + + STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE; + STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE; + STDMETHOD(EnumAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE; + STDMETHOD(GetMiscStatus) (THIS_ DWORD dwAspect, DWORD FAR* pdwStatus) PURE; + STDMETHOD(SetColorScheme) (THIS_ LPLOGPALETTE lpLogpal) PURE; +}; +typedef IOleObject FAR* LPOLEOBJECT; + + + +#undef INTERFACE +#define INTERFACE IOleClientSite + +DECLARE_INTERFACE_(IOleClientSite, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleClientSite methods *** + STDMETHOD(SaveObject) (THIS) PURE; + STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker, + LPMONIKER FAR* ppmk) PURE; + STDMETHOD(GetContainer) (THIS_ LPOLECONTAINER FAR* ppContainer) PURE; + STDMETHOD(ShowObject) (THIS) PURE; + STDMETHOD(OnShowWindow) (THIS_ BOOL fShow) PURE; + STDMETHOD(RequestNewObjectLayout) (THIS) PURE; +}; +typedef IOleClientSite FAR* LPOLECLIENTSITE; + + +/****** OLE Runnable Object Interface **********************************/ + +#undef INTERFACE +#define INTERFACE IRunnableObject + +DECLARE_INTERFACE_(IRunnableObject, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IRunnableObject methods *** + STDMETHOD(GetRunningClass) (THIS_ LPCLSID lpClsid) PURE; + STDMETHOD(Run) (THIS_ LPBINDCTX pbc) PURE; + STDMETHOD_(BOOL, IsRunning) (THIS) PURE; + STDMETHOD(LockRunning)(THIS_ BOOL fLock, BOOL fLastUnlockCloses) PURE; + STDMETHOD(SetContainedObject)(THIS_ BOOL fContained) PURE; +}; +typedef IRunnableObject FAR* LPRUNNABLEOBJECT; + + +/****** OLE Container Interfaces ***************************************/ + + +#undef INTERFACE +#define INTERFACE IParseDisplayName + +DECLARE_INTERFACE_(IParseDisplayName, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IParseDisplayName method *** + STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName, + ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE; +}; +typedef IParseDisplayName FAR* LPPARSEDISPLAYNAME; + + +#undef INTERFACE +#define INTERFACE IOleContainer + +DECLARE_INTERFACE_(IOleContainer, IParseDisplayName) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IParseDisplayName method *** + STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName, + ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE; + + // *** IOleContainer methods *** + STDMETHOD(EnumObjects) ( DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE; + STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE; +}; +typedef IOleContainer FAR* LPOLECONTAINER; + + +typedef enum tagBINDSPEED +{ + BINDSPEED_INDEFINITE = 1, + BINDSPEED_MODERATE = 2, + BINDSPEED_IMMEDIATE = 3 +} BINDSPEED; + +typedef enum tagOLECONTF +{ + OLECONTF_EMBEDDINGS = 1, + OLECONTF_LINKS = 2, + OLECONTF_OTHERS = 4, + OLECONTF_ONLYUSER = 8, + OLECONTF_ONLYIFRUNNING = 16 +} OLECONTF; + + +#undef INTERFACE +#define INTERFACE IOleItemContainer + +DECLARE_INTERFACE_(IOleItemContainer, IOleContainer) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IParseDisplayName method *** + STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName, + ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE; + + // *** IOleContainer methods *** + STDMETHOD(EnumObjects) (THIS_ DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE; + STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE; + + // *** IOleItemContainer methods *** + STDMETHOD(GetObject) (THIS_ LPSTR lpszItem, DWORD dwSpeedNeeded, + LPBINDCTX pbc, REFIID riid, LPVOID FAR* ppvObject) PURE; + STDMETHOD(GetObjectStorage) (THIS_ LPSTR lpszItem, LPBINDCTX pbc, + REFIID riid, LPVOID FAR* ppvStorage) PURE; + STDMETHOD(IsRunning) (THIS_ LPSTR lpszItem) PURE; +}; +typedef IOleItemContainer FAR* LPOLEITEMCONTAINER; + + +/****** OLE Advise Holder Interface ***************************************/ + + +#undef INTERFACE +#define INTERFACE IOleAdviseHolder + +DECLARE_INTERFACE_(IOleAdviseHolder, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleAdviseHolder methods *** + STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE; + STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE; + STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE; + + STDMETHOD(SendOnRename)(THIS_ LPMONIKER pmk) PURE; + STDMETHOD(SendOnSave)(THIS) PURE; + STDMETHOD(SendOnClose)(THIS) PURE; +}; +typedef IOleAdviseHolder FAR* LPOLEADVISEHOLDER; + + +/****** OLE Link Interface ************************************************/ + +/* Link update options */ +typedef enum tagOLEUPDATE +{ + OLEUPDATE_ALWAYS=1, + OLEUPDATE_ONCALL=3 +} OLEUPDATE; +typedef OLEUPDATE FAR* LPOLEUPDATE; + + +// for IOleLink::BindToSource +typedef enum tagOLELINKBIND +{ + OLELINKBIND_EVENIFCLASSDIFF = 1, +} OLELINKBIND; + + +#undef INTERFACE +#define INTERFACE IOleLink + +DECLARE_INTERFACE_(IOleLink, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleLink methods *** + STDMETHOD(SetUpdateOptions) (THIS_ DWORD dwUpdateOpt) PURE; + STDMETHOD(GetUpdateOptions) (THIS_ LPDWORD pdwUpdateOpt) PURE; + STDMETHOD(SetSourceMoniker) (THIS_ LPMONIKER pmk, REFCLSID rclsid) PURE; + STDMETHOD(GetSourceMoniker) (THIS_ LPMONIKER FAR* ppmk) PURE; + STDMETHOD(SetSourceDisplayName) (THIS_ LPCSTR lpszDisplayName) PURE; + STDMETHOD(GetSourceDisplayName) (THIS_ LPSTR FAR* lplpszDisplayName) PURE; + STDMETHOD(BindToSource) (THIS_ DWORD bindflags, LPBINDCTX pbc) PURE; + STDMETHOD(BindIfRunning) (THIS) PURE; + STDMETHOD(GetBoundSource) (THIS_ LPUNKNOWN FAR* ppUnk) PURE; + STDMETHOD(UnbindSource) (THIS) PURE; + STDMETHOD(Update) (THIS_ LPBINDCTX pbc) PURE; +}; +typedef IOleLink FAR* LPOLELINK; + + +/****** OLE InPlace Editing Interfaces ************************************/ + +#ifdef _MAC +typedef Handle HOLEMENU; +typedef long SIZE; +typedef long HACCEL; +#else +DECLARE_HANDLE(HOLEMENU); +#endif + +typedef struct FARSTRUCT tagOIFI // OleInPlaceFrameInfo +{ + UINT cb; + BOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + int cAccelEntries; +} OLEINPLACEFRAMEINFO, FAR* LPOLEINPLACEFRAMEINFO; + + +typedef struct FARSTRUCT tagOleMenuGroupWidths +{ + LONG width[6]; +} OLEMENUGROUPWIDTHS, FAR* LPOLEMENUGROUPWIDTHS; + +typedef RECT BORDERWIDTHS; +typedef LPRECT LPBORDERWIDTHS; +typedef LPCRECT LPCBORDERWIDTHS; + +/* Inplace editing specific error codes */ + +#define INPLACE_E_NOTUNDOABLE (INPLACE_E_FIRST) +// undo is not avaiable + +#define INPLACE_E_NOTOOLSPACE (INPLACE_E_FIRST+1) +// Space for tools is not available + +#define INPLACE_S_TRUNCATED (INPLACE_S_FIRST) +// Message is too long, some of it had to be truncated before displaying + +//misc definitions +#define INPLACE_DEFBORDERWIDTH 4 + +// forward type declarations +#if defined(__cplusplus) +interface IOleInPlaceUIWindow; +#else +typedef interface IOleInPlaceUIWindow IOleInPlaceUIWindow; +#endif + +typedef IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW; + + +#undef INTERFACE +#define INTERFACE IOleWindow + +DECLARE_INTERFACE_(IOleWindow, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleWindow methods *** + STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; +}; + +typedef IOleWindow FAR* LPOLEWINDOW; + + + +#undef INTERFACE +#define INTERFACE IOleInPlaceObject + +DECLARE_INTERFACE_(IOleInPlaceObject, IOleWindow) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleWindow methods *** + STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; + + // *** IOleInPlaceObject methods *** + STDMETHOD(InPlaceDeactivate) (THIS) PURE; + STDMETHOD(UIDeactivate) (THIS) PURE; + STDMETHOD(SetObjectRects) (THIS_ LPCRECT lprcPosRect, + LPCRECT lprcClipRect) PURE; + STDMETHOD(ReactivateAndUndo) (THIS) PURE; +}; +typedef IOleInPlaceObject FAR* LPOLEINPLACEOBJECT; + + + +#undef INTERFACE +#define INTERFACE IOleInPlaceActiveObject + +DECLARE_INTERFACE_(IOleInPlaceActiveObject, IOleWindow) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleWindow methods *** + STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; + + // *** IOleInPlaceActiveObject methods *** + STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg) PURE; + STDMETHOD(OnFrameWindowActivate) (THIS_ BOOL fActivate) PURE; + STDMETHOD(OnDocWindowActivate) (THIS_ BOOL fActivate) PURE; + STDMETHOD(ResizeBorder) (THIS_ LPCRECT lprectBorder, LPOLEINPLACEUIWINDOW lpUIWindow, BOOL fFrameWindow) PURE; + STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE; +}; +typedef IOleInPlaceActiveObject FAR* LPOLEINPLACEACTIVEOBJECT; + + + +#undef INTERFACE +#define INTERFACE IOleInPlaceUIWindow + +DECLARE_INTERFACE_(IOleInPlaceUIWindow, IOleWindow) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleWindow methods *** + STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; + + // *** IOleInPlaceUIWindow methods *** + STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE; + STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE; + STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE; + STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject, + LPCSTR lpszObjName) PURE; +}; +typedef IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW; + + + +#undef INTERFACE +#define INTERFACE IOleInPlaceFrame + +DECLARE_INTERFACE_(IOleInPlaceFrame, IOleInPlaceUIWindow) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleWindow methods *** + STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; + + // *** IOleInPlaceUIWindow methods *** + STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE; + STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE; + STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE; + STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject, + LPCSTR lpszObjName) PURE; + + + // *** IOleInPlaceFrame methods *** + STDMETHOD(InsertMenus) (THIS_ HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE; + STDMETHOD(SetMenu) (THIS_ HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject) PURE; + STDMETHOD(RemoveMenus) (THIS_ HMENU hmenuShared) PURE; + STDMETHOD(SetStatusText) (THIS_ LPCSTR lpszStatusText) PURE; + STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE; + STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg, WORD wID) PURE; +}; +typedef IOleInPlaceFrame FAR* LPOLEINPLACEFRAME; + + +#undef INTERFACE +#define INTERFACE IOleInPlaceSite + +DECLARE_INTERFACE_(IOleInPlaceSite, IOleWindow) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IOleWindow methods *** + STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; + + // *** IOleInPlaceSite methods *** + STDMETHOD(CanInPlaceActivate) (THIS) PURE; + STDMETHOD(OnInPlaceActivate) (THIS) PURE; + STDMETHOD(OnUIActivate) (THIS) PURE; + STDMETHOD(GetWindowContext) (THIS_ LPOLEINPLACEFRAME FAR* lplpFrame, + LPOLEINPLACEUIWINDOW FAR* lplpDoc, + LPRECT lprcPosRect, + LPRECT lprcClipRect, + LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE; + STDMETHOD(Scroll) (THIS_ SIZE scrollExtent) PURE; + STDMETHOD(OnUIDeactivate) (THIS_ BOOL fUndoable) PURE; + STDMETHOD(OnInPlaceDeactivate) (THIS) PURE; + STDMETHOD(DiscardUndoState) (THIS) PURE; + STDMETHOD(DeactivateAndUndo) (THIS) PURE; + STDMETHOD(OnPosRectChange) (THIS_ LPCRECT lprcPosRect) PURE; +}; +typedef IOleInPlaceSite FAR* LPOLEINPLACESITE; + + + +/****** OLE API Prototypes ************************************************/ + +STDAPI_(DWORD) OleBuildVersion( VOID ); + +/* helper functions */ +STDAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid); +STDAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid); +STDAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid); +STDAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid); +STDAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPSTR lpszUserType); +STDAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPSTR FAR* lplpszUserType); + + +/* init/term */ + +STDAPI OleInitialize(LPMALLOC pMalloc); +STDAPI_(void) OleUninitialize(void); + + +/* APIs to query whether (Embedded/Linked) object can be created from + the data object */ + +STDAPI OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject); +STDAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject); + + +/* Object creation APIs */ + +STDAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, + LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, + LPSTORAGE pStg, LPVOID FAR* ppvObj); + +STDAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, + DWORD renderopt, LPFORMATETC pFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, + LPVOID FAR* ppvObj); + +STDAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, + DWORD renderopt, LPFORMATETC pFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, + LPVOID FAR* ppvObj); + +STDAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid, + DWORD renderopt, LPFORMATETC pFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, + LPVOID FAR* ppvObj); + + +STDAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, + DWORD renderopt, LPFORMATETC lpFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj); + +STDAPI OleCreateLinkToFile(LPCSTR lpszFileName, REFIID riid, + DWORD renderopt, LPFORMATETC lpFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj); + +STDAPI OleCreateFromFile(REFCLSID rclsid, LPCSTR lpszFileName, REFIID riid, + DWORD renderopt, LPFORMATETC lpFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj); + +STDAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, + LPVOID FAR* ppvObj); + +STDAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad); + +STDAPI OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj); +STDAPI OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm ); + + +STDAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained); +STDAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible); + + +/* Drag/Drop APIs */ + +STDAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget); +STDAPI RevokeDragDrop(HWND hwnd); +STDAPI DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource, + DWORD dwOKEffects, LPDWORD pdwEffect); + +/* Clipboard APIs */ + +STDAPI OleSetClipboard(LPDATAOBJECT pDataObj); +STDAPI OleGetClipboard(LPDATAOBJECT FAR* ppDataObj); +STDAPI OleFlushClipboard(void); +STDAPI OleIsCurrentClipboard(LPDATAOBJECT pDataObj); + + +/* InPlace Editing APIs */ + +STDAPI_(HOLEMENU) OleCreateMenuDescriptor (HMENU hmenuCombined, + LPOLEMENUGROUPWIDTHS lpMenuWidths); +STDAPI OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame, + HWND hwndActiveObject, + LPOLEINPLACEFRAME lpFrame, + LPOLEINPLACEACTIVEOBJECT lpActiveObj); +STDAPI OleDestroyMenuDescriptor (HOLEMENU holemenu); + +STDAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame, + LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg); + + +/* Helper APIs */ +STDAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat, + UINT uiFlags); + +STDAPI OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw, + LPCRECT lprcBounds); + +STDAPI OleRun(LPUNKNOWN pUnknown); +STDAPI_(BOOL) OleIsRunning(LPOLEOBJECT pObject); +STDAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses); + +STDAPI_(void) ReleaseStgMedium(LPSTGMEDIUM); +STDAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder); + +STDAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, + REFIID riid, LPVOID FAR* lplpObj); + +STDAPI OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter, + DWORD flags, LPCLASSFACTORY pCF, + REFIID riid, LPVOID FAR* lplpObj); + +STDAPI_(BOOL) IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, + WORD FAR* lpwCmd); + + +/* Icon extraction Helper APIs */ + +STDAPI_(HGLOBAL) OleGetIconOfFile(LPSTR lpszPath, BOOL fUseFileAsLabel); + +STDAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid, LPSTR lpszLabel, + BOOL fUseTypeAsLabel); + +STDAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPSTR lpszLabel, + LPSTR lpszSourceFile, UINT iIconIndex); + + + +/* Registration Database Helper APIs */ + +STDAPI OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType, + LPSTR FAR* pszUserType); + +STDAPI OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect, + DWORD FAR* pdwStatus); + +STDAPI OleRegEnumFormatEtc (REFCLSID clsid, DWORD dwDirection, + LPENUMFORMATETC FAR* ppenum); + +STDAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum); + + + +/* OLE 1.0 conversion APIS */ + +STDAPI OleConvertIStorageToOLESTREAM + (LPSTORAGE pstg, + LPOLESTREAM polestm); + +STDAPI OleConvertOLESTREAMToIStorage + (LPOLESTREAM polestm, + LPSTORAGE pstg, + const DVTARGETDEVICE FAR* ptd); + +STDAPI OleConvertIStorageToOLESTREAMEx + (LPSTORAGE pstg, + // Presentation data to OLESTREAM + CLIPFORMAT cfFormat, // format + LONG lWidth, // width + LONG lHeight, // height + DWORD dwSize, // size in bytes + LPSTGMEDIUM pmedium, // bits + LPOLESTREAM polestm); + +STDAPI OleConvertOLESTREAMToIStorageEx + (LPOLESTREAM polestm, + LPSTORAGE pstg, + // Presentation data from OLESTREAM + CLIPFORMAT FAR* pcfFormat, // format + LONG FAR* plwWidth, // width + LONG FAR* plHeight, // height + DWORD FAR* pdwSize, // size in bytes + LPSTGMEDIUM pmedium); // bits + + + +/* Storage Utility APIs */ +STDAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal); +STDAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, + LPLOCKBYTES FAR* pplkbyt); + +STDAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal); +STDAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, + LPSTREAM FAR* ppstm); + + +/* ConvertTo APIS */ + +STDAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew); +STDAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew); +STDAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew); +STDAPI GetConvertStg(LPSTORAGE pStg); +STDAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert); + + +#endif // _OLE2_H_ diff --git a/private/oleauto/ole/win16/ole2.reg b/private/oleauto/ole/win16/ole2.reg new file mode 100644 index 000000000..fe992a65b --- /dev/null +++ b/private/oleauto/ole/win16/ole2.reg @@ -0,0 +1,460 @@ +REGEDIT + +// +// The values of the following keys need to be localized +// +// LANGUAGE: USA +// + +; The string "Edit" below is to be localized. +HKEY_CLASSES_ROOT\Software\Microsoft\OLE1\UnregisteredVerb = Edit + +; The string "Unknown" below is to be localized. +HKEY_CLASSES_ROOT\Software\Microsoft\OLE2\UnknownUserType = Unknown + +; The string "Picture (Metafile)" is to be localized. +HKEY_CLASSES_ROOT\StaticMetafile = Picture (Metafile) +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046} = Picture (Metafile) + +; The string "Picture" is to be localized. +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046}\AuxUserType\2 = Picture +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046}\AuxUserType\2 = Picture + +; The string "Picture (Device Independent Bitmap)" is to be localized. +HKEY_CLASSES_ROOT\StaticDib = Picture (Device Independent Bitmap) +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046} = Picture (Device Independent Bitmap) + +; The string "Paintbrush Picture" is to be localized. +HKEY_CLASSES_ROOT\CLSID\{0003000a-0000-0000-C000-000000000046} = Paintbrush Picture + +; The string "Microsoft Drawing" is to be localized. +HKEY_CLASSES_ROOT\CLSID\{00030007-0000-0000-C000-000000000046} = Microsoft Drawing + +; The string "OLE (Part * of 5)" below is to be localized. +HKEY_CLASSES_ROOT\CLSID = OLE (Part 1 of 5) +HKEY_CLASSES_ROOT\Software = OLE (Part 2 of 5) +HKEY_CLASSES_ROOT\Interface = OLE (Part 3 of 5) +HKEY_CLASSES_ROOT\TypeLib = OLE (Part 4 of 5) +HKEY_CLASSES_ROOT\FileType = OLE (Part 5 of 5) + +// -------------------- NO LOCALIZATION NECESSARY BELOW THIS LINE ------------ + +; registration info for ole2 private classes + +HKEY_CLASSES_ROOT\CLSID\{00000300-0000-0000-C000-000000000046} = StdOleLink +HKEY_CLASSES_ROOT\CLSID\{00000300-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{00000301-0000-0000-C000-000000000046} = StdMemStm +HKEY_CLASSES_ROOT\CLSID\{00000301-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{00000302-0000-0000-C000-000000000046} = StdMemBytes +HKEY_CLASSES_ROOT\CLSID\{00000302-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{00000303-0000-0000-C000-000000000046} = FileMoniker +HKEY_CLASSES_ROOT\CLSID\{00000303-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{00000304-0000-0000-C000-000000000046} = ItemMoniker +HKEY_CLASSES_ROOT\CLSID\{00000304-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{00000305-0000-0000-C000-000000000046} = AntiMoniker +HKEY_CLASSES_ROOT\CLSID\{00000305-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{00000306-0000-0000-C000-000000000046} = PointerMoniker +HKEY_CLASSES_ROOT\CLSID\{00000306-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +; 307 used to be CDdeFileMoniker + +HKEY_CLASSES_ROOT\CLSID\{00000308-0000-0000-C000-000000000046} = PackagerMoniker +HKEY_CLASSES_ROOT\CLSID\{00000308-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{00000309-0000-0000-C000-000000000046} = CompositeMoniker +HKEY_CLASSES_ROOT\CLSID\{00000309-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{0000030A-0000-0000-C000-000000000046} = DdeCompositeMoniker +HKEY_CLASSES_ROOT\CLSID\{0000030A-0000-0000-C000-000000000046}\InprocServer = ole2.dll + +HKEY_CLASSES_ROOT\CLSID\{0000030B-0000-0000-C000-000000000046} = DfMarshal +HKEY_CLASSES_ROOT\CLSID\{0000030B-0000-0000-C000-000000000046}\InprocServer = storage.dll + + +// servers for proxy/stub objects +HKEY_CLASSES_ROOT\CLSID\{0000030C-0000-0000-C000-000000000046} = PSGenObject +HKEY_CLASSES_ROOT\CLSID\{0000030C-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{0000030D-0000-0000-C000-000000000046} = PSClientSite +HKEY_CLASSES_ROOT\CLSID\{0000030D-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{0000030E-0000-0000-C000-000000000046} = PSClassObject +HKEY_CLASSES_ROOT\CLSID\{0000030E-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{0000030F-0000-0000-C000-000000000046} = PSInPlaceActive +HKEY_CLASSES_ROOT\CLSID\{0000030F-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{00000310-0000-0000-C000-000000000046} = PSInPlaceFrame +HKEY_CLASSES_ROOT\CLSID\{00000310-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{00000311-0000-0000-C000-000000000046} = PSDragDrop +HKEY_CLASSES_ROOT\CLSID\{00000311-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{00000312-0000-0000-C000-000000000046} = PSBindCtx +HKEY_CLASSES_ROOT\CLSID\{00000312-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{00000313-0000-0000-C000-000000000046} = PSEnumerators +HKEY_CLASSES_ROOT\CLSID\{00000313-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + +HKEY_CLASSES_ROOT\CLSID\{00000314-0000-0000-C000-000000000046} = PSStore +HKEY_CLASSES_ROOT\CLSID\{00000314-0000-0000-C000-000000000046}\InprocServer = ole2prox.dll + + +// +//StaticMetafile +// +;Root level key +HKEY_CLASSES_ROOT\StaticMetafile\CLSID = {00000315-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046}\ProgID = StaticMetafile + +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046}\InprocServer = ole2.dll + + +; Default File Format = CF_METAFILEPICT +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046}\DataFormats\DefaultFile = 3 + +; Format 0 = CF_METAFILEPICT, DVASPECT_CONTENT, TYMED_MFPICT, DATADIR_BOTH +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046}\DataFormats\GetSet\0 = 3,1,32,3 + +; MiscStatus = OLEMISC_STATIC | OLEMISC_CANTLINKINSIDE | OLEMISC_RENDERINGISDEVICEINDEPENDENT = 8 + 16 + 512 +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046}\MiscStatus = 536 +; Readable format = CF_METAFILEPICT +HKEY_CLASSES_ROOT\CLSID\{00000315-0000-0000-C000-000000000046}\Conversion\Readable\Main = 3,MSDraw + + +// +//StaticDib +// + +; Root level keys +HKEY_CLASSES_ROOT\StaticDib\CLSID = {00000316-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046}\ProgID = StaticDib + +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046}\InprocServer = ole2.dll + + + +; Default File Format = CF_DIB +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046}\DataFormats\DefaultFile = 8 + +; Format 0 = CF_DIB, DVASPECT_CONTENT, TYMED_HGLOBAL, DATADIR_BOTH +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046}\DataFormats\GetSet\0 = 8,1,1,3 + +; MiscStatus = OLEMISC_STATIC | OLEMISC_CANTLINKINSIDE | OLEMISC_RENDERINGISDEVICEINDEPENDENT = 8 + 16 + 512 +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046}\MiscStatus = 536 + +; Readable format = CF_DIB +HKEY_CLASSES_ROOT\CLSID\{00000316-0000-0000-C000-000000000046}\Conversion\Readable\Main = 8,PBrush + + +// +//PBrush +// + +; ProgID +HKEY_CLASSES_ROOT\CLSID\{0003000a-0000-0000-C000-000000000046}\ProgID = PBrush + +; Ole1Class +HKEY_CLASSES_ROOT\CLSID\{0003000a-0000-0000-C000-000000000046}\Ole1Class = PBrush + + +; MiscStatus = OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512 +HKEY_CLASSES_ROOT\CLSID\{0003000a-0000-0000-C000-000000000046}\MiscStatus = 512 + +; Readwritable format = CF_DIB +HKEY_CLASSES_ROOT\CLSID\{0003000a-0000-0000-C000-000000000046}\Conversion\Readable\Main = 8 + +// +// MSDraw +// + +; ProgID +HKEY_CLASSES_ROOT\CLSID\{00030007-0000-0000-C000-000000000046}\ProgID = MSDraw + +; Ole1Class +HKEY_CLASSES_ROOT\CLSID\{00030007-0000-0000-C000-000000000046}\Ole1Class = MSDraw + +; MiscStatus = OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512 +HKEY_CLASSES_ROOT\CLSID\{00030007-0000-0000-C000-000000000046}\MiscStatus = 512 + + +// maps IIDs into proxy/stub class id +HKEY_CLASSES_ROOT\Interface\{00000000-0000-0000-C000-000000000046} = IUnknown +HKEY_CLASSES_ROOT\Interface\{00000000-0000-0000-C000-000000000046}\BaseInterface = +HKEY_CLASSES_ROOT\Interface\{00000000-0000-0000-C000-000000000046}\NumMethods = 3 + +HKEY_CLASSES_ROOT\Interface\{00000001-0000-0000-C000-000000000046} = IClassFactory +HKEY_CLASSES_ROOT\Interface\{00000001-0000-0000-C000-000000000046}\NumMethods = 5 +HKEY_CLASSES_ROOT\Interface\{00000001-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030E-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000002-0000-0000-C000-000000000046} = IMalloc +HKEY_CLASSES_ROOT\Interface\{00000002-0000-0000-C000-000000000046}\NumMethods = 9 + +HKEY_CLASSES_ROOT\Interface\{00000003-0000-0000-C000-000000000046} = IMarshal +HKEY_CLASSES_ROOT\Interface\{00000003-0000-0000-C000-000000000046}\NumMethods = 9 + +HKEY_CLASSES_ROOT\Interface\{00000004-0000-0000-C000-000000000046} = IRpcChannel +HKEY_CLASSES_ROOT\Interface\{00000004-0000-0000-C000-000000000046}\NumMethods = 7 + +HKEY_CLASSES_ROOT\Interface\{00000005-0000-0000-C000-000000000046} = IRpcStub +HKEY_CLASSES_ROOT\Interface\{00000005-0000-0000-C000-000000000046}\NumMethods = 8 + +HKEY_CLASSES_ROOT\Interface\{00000007-0000-0000-C000-000000000046} = IRpcProxy +HKEY_CLASSES_ROOT\Interface\{00000007-0000-0000-C000-000000000046}\NumMethods = 5 + +HKEY_CLASSES_ROOT\Interface\{00000009-0000-0000-C000-000000000046} = IPSFactory +HKEY_CLASSES_ROOT\Interface\{00000009-0000-0000-C000-000000000046}\NumMethods = 5 + +HKEY_CLASSES_ROOT\Interface\{0000000A-0000-0000-C000-000000000046} = ILockBytes +HKEY_CLASSES_ROOT\Interface\{0000000A-0000-0000-C000-000000000046}\NumMethods = 10 +HKEY_CLASSES_ROOT\Interface\{0000000A-0000-0000-C000-000000000046}\ProxyStubClsid = {00000314-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000000B-0000-0000-C000-000000000046} = IStorage +HKEY_CLASSES_ROOT\Interface\{0000000B-0000-0000-C000-000000000046}\NumMethods = 18 +HKEY_CLASSES_ROOT\Interface\{0000000B-0000-0000-C000-000000000046}\ProxyStubClsid = {00000314-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000000C-0000-0000-C000-000000000046} = IStream +HKEY_CLASSES_ROOT\Interface\{0000000C-0000-0000-C000-000000000046}\NumMethods = 14 +HKEY_CLASSES_ROOT\Interface\{0000000C-0000-0000-C000-000000000046}\ProxyStubClsid = {00000314-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000000D-0000-0000-C000-000000000046} = IEnumSTATSTG +HKEY_CLASSES_ROOT\Interface\{0000000D-0000-0000-C000-000000000046}\NumMethods = 7 + +HKEY_CLASSES_ROOT\Interface\{0000000E-0000-0000-C000-000000000046} = IBindCtx +HKEY_CLASSES_ROOT\Interface\{0000000E-0000-0000-C000-000000000046}\NumMethods = 13 +HKEY_CLASSES_ROOT\Interface\{0000000E-0000-0000-C000-000000000046}\ProxyStubClsid = {00000312-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000000F-0000-0000-C000-000000000046} = IMoniker +HKEY_CLASSES_ROOT\Interface\{0000000F-0000-0000-C000-000000000046}\BaseInterface = {00000109-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{0000000F-0000-0000-C000-000000000046}\NumMethods = 23 + +HKEY_CLASSES_ROOT\Interface\{00000010-0000-0000-C000-000000000046} = IRunningObjectTable +HKEY_CLASSES_ROOT\Interface\{00000010-0000-0000-C000-000000000046}\NumMethods = 10 + +HKEY_CLASSES_ROOT\Interface\{00000012-0000-0000-C000-000000000046} = IRootStorage +HKEY_CLASSES_ROOT\Interface\{00000012-0000-0000-C000-000000000046}\NumMethods = 4 + +HKEY_CLASSES_ROOT\Interface\{00000016-0000-0000-C000-000000000046} = IMessageFilter +HKEY_CLASSES_ROOT\Interface\{00000016-0000-0000-C000-000000000046}\NumMethods = 6 + +HKEY_CLASSES_ROOT\Interface\{00000018-0000-0000-C000-000000000046} = IStdMarshalInfo +HKEY_CLASSES_ROOT\Interface\{00000018-0000-0000-C000-000000000046}\NumMethods = 4 + +HKEY_CLASSES_ROOT\Interface\{00000019-0000-0000-C000-000000000046} = IExternalConnection +HKEY_CLASSES_ROOT\Interface\{00000019-0000-0000-C000-000000000046}\NumMethods = 5 + +HKEY_CLASSES_ROOT\Interface\{00000100-0000-0000-C000-000000000046} = IEnumUnknown +HKEY_CLASSES_ROOT\Interface\{00000100-0000-0000-C000-000000000046}\NumMethods = 7 + +HKEY_CLASSES_ROOT\Interface\{00000101-0000-0000-C000-000000000046} = IEnumString +HKEY_CLASSES_ROOT\Interface\{00000101-0000-0000-C000-000000000046}\NumMethods = 7 + +HKEY_CLASSES_ROOT\Interface\{00000102-0000-0000-C000-000000000046} = IEnumMoniker +HKEY_CLASSES_ROOT\Interface\{00000102-0000-0000-C000-000000000046}\NumMethods = 7 + +HKEY_CLASSES_ROOT\Interface\{00000103-0000-0000-C000-000000000046} = IEnumFORMATETC +HKEY_CLASSES_ROOT\Interface\{00000103-0000-0000-C000-000000000046}\NumMethods = 7 +HKEY_CLASSES_ROOT\Interface\{00000103-0000-0000-C000-000000000046}\ProxyStubClsid = {00000313-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000104-0000-0000-C000-000000000046} = IEnumOLEVERB +HKEY_CLASSES_ROOT\Interface\{00000104-0000-0000-C000-000000000046}\NumMethods = 7 +HKEY_CLASSES_ROOT\Interface\{00000104-0000-0000-C000-000000000046}\ProxyStubClsid = {00000313-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000105-0000-0000-C000-000000000046} = IEnumSTATDATA +HKEY_CLASSES_ROOT\Interface\{00000105-0000-0000-C000-000000000046}\NumMethods = 7 +HKEY_CLASSES_ROOT\Interface\{00000105-0000-0000-C000-000000000046}\ProxyStubClsid = {00000313-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000109-0000-0000-C000-000000000046} = IPersistStream +HKEY_CLASSES_ROOT\Interface\{00000109-0000-0000-C000-000000000046}\BaseInterface = {0000010C-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000109-0000-0000-C000-000000000046}\NumMethods = 8 + +HKEY_CLASSES_ROOT\Interface\{0000010A-0000-0000-C000-000000000046} = IPersistStorage +HKEY_CLASSES_ROOT\Interface\{0000010A-0000-0000-C000-000000000046}\BaseInterface = {0000010C-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{0000010A-0000-0000-C000-000000000046}\NumMethods = 10 +HKEY_CLASSES_ROOT\Interface\{0000010A-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000010B-0000-0000-C000-000000000046} = IPersistFile +HKEY_CLASSES_ROOT\Interface\{0000010B-0000-0000-C000-000000000046}\BaseInterface = {0000010C-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{0000010B-0000-0000-C000-000000000046}\NumMethods = 9 +HKEY_CLASSES_ROOT\Interface\{0000010B-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000010C-0000-0000-C000-000000000046} = IPersist +HKEY_CLASSES_ROOT\Interface\{0000010C-0000-0000-C000-000000000046}\NumMethods = 4 +HKEY_CLASSES_ROOT\Interface\{0000010C-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000010D-0000-0000-C000-000000000046} = IViewObject +HKEY_CLASSES_ROOT\Interface\{0000010D-0000-0000-C000-000000000046}\NumMethods = 9 + +HKEY_CLASSES_ROOT\Interface\{0000010E-0000-0000-C000-000000000046} = IDataObject +HKEY_CLASSES_ROOT\Interface\{0000010E-0000-0000-C000-000000000046}\NumMethods = 12 +HKEY_CLASSES_ROOT\Interface\{0000010E-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000010F-0000-0000-C000-000000000046} = IAdviseSink +HKEY_CLASSES_ROOT\Interface\{0000010F-0000-0000-C000-000000000046}\NumMethods = 8 +HKEY_CLASSES_ROOT\Interface\{0000010F-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030D-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000110-0000-0000-C000-000000000046} = IDataAdviseHolder +HKEY_CLASSES_ROOT\Interface\{00000110-0000-0000-C000-000000000046}\NumMethods = 7 + +HKEY_CLASSES_ROOT\Interface\{00000111-0000-0000-C000-000000000046} = IOleAdviseHolder +HKEY_CLASSES_ROOT\Interface\{00000111-0000-0000-C000-000000000046}\NumMethods = 9 + +HKEY_CLASSES_ROOT\Interface\{00000112-0000-0000-C000-000000000046} = IOleObject +HKEY_CLASSES_ROOT\Interface\{00000112-0000-0000-C000-000000000046}\NumMethods = 24 +HKEY_CLASSES_ROOT\Interface\{00000112-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000113-0000-0000-C000-000000000046} = IOleInPlaceObject +HKEY_CLASSES_ROOT\Interface\{00000113-0000-0000-C000-000000000046}\BaseInterface = {00000114-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000113-0000-0000-C000-000000000046}\NumMethods = 9 +HKEY_CLASSES_ROOT\Interface\{00000113-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000114-0000-0000-C000-000000000046} = IOleWindow +HKEY_CLASSES_ROOT\Interface\{00000114-0000-0000-C000-000000000046}\NumMethods = 5 + +HKEY_CLASSES_ROOT\Interface\{00000115-0000-0000-C000-000000000046} = IOleInPlaceUIWindow +HKEY_CLASSES_ROOT\Interface\{00000115-0000-0000-C000-000000000046}\BaseInterface = {00000114-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000115-0000-0000-C000-000000000046}\NumMethods = 9 +HKEY_CLASSES_ROOT\Interface\{00000115-0000-0000-C000-000000000046}\ProxyStubClsid = {00000310-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000116-0000-0000-C000-000000000046} = IOleInPlaceFrame +HKEY_CLASSES_ROOT\Interface\{00000116-0000-0000-C000-000000000046}\NumMethods = 15 +HKEY_CLASSES_ROOT\Interface\{00000116-0000-0000-C000-000000000046}\ProxyStubClsid = {00000310-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000117-0000-0000-C000-000000000046} = IOleInPlaceActiveObject +HKEY_CLASSES_ROOT\Interface\{00000117-0000-0000-C000-000000000046}\BaseInterface = {00000114-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000117-0000-0000-C000-000000000046}\NumMethods = 10 +HKEY_CLASSES_ROOT\Interface\{00000117-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030F-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000118-0000-0000-C000-000000000046} = IOleClientSite +HKEY_CLASSES_ROOT\Interface\{00000118-0000-0000-C000-000000000046}\NumMethods = 9 +HKEY_CLASSES_ROOT\Interface\{00000118-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030D-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000119-0000-0000-C000-000000000046} = IOleInPlaceSite +HKEY_CLASSES_ROOT\Interface\{00000119-0000-0000-C000-000000000046}\BaseInterface = {00000114-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000119-0000-0000-C000-000000000046}\NumMethods = 15 +HKEY_CLASSES_ROOT\Interface\{00000119-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030D-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000011A-0000-0000-C000-000000000046} = IParseDisplayName +HKEY_CLASSES_ROOT\Interface\{0000011A-0000-0000-C000-000000000046}\NumMethods = 4 +HKEY_CLASSES_ROOT\Interface\{0000011A-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000011B-0000-0000-C000-000000000046} = IOleContainer +HKEY_CLASSES_ROOT\Interface\{0000011B-0000-0000-C000-000000000046}\BaseInterface = {0000011A-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{0000011B-0000-0000-C000-000000000046}\NumMethods = 6 +HKEY_CLASSES_ROOT\Interface\{0000011B-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000011C-0000-0000-C000-000000000046} = IOleItemContainer +HKEY_CLASSES_ROOT\Interface\{0000011C-0000-0000-C000-000000000046}\BaseInterface = {0000011B-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{0000011C-0000-0000-C000-000000000046}\NumMethods = 9 +HKEY_CLASSES_ROOT\Interface\{0000011C-0000-0000-C000-000000000046}\ProxyStubClsid = {0000030C-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{0000011D-0000-0000-C000-000000000046} = IOleLink +HKEY_CLASSES_ROOT\Interface\{0000011D-0000-0000-C000-000000000046}\NumMethods = 14 + +HKEY_CLASSES_ROOT\Interface\{0000011E-0000-0000-C000-000000000046} = IOleCache +HKEY_CLASSES_ROOT\Interface\{0000011E-0000-0000-C000-000000000046}\NumMethods = 8 + +HKEY_CLASSES_ROOT\Interface\{00000121-0000-0000-C000-000000000046} = IDropSource +HKEY_CLASSES_ROOT\Interface\{00000121-0000-0000-C000-000000000046}\NumMethods = 5 + +HKEY_CLASSES_ROOT\Interface\{00000122-0000-0000-C000-000000000046} = IDropTarget +HKEY_CLASSES_ROOT\Interface\{00000122-0000-0000-C000-000000000046}\NumMethods = 7 +HKEY_CLASSES_ROOT\Interface\{00000122-0000-0000-C000-000000000046}\ProxyStubClsid = {00000311-0000-0000-C000-000000000046} + +HKEY_CLASSES_ROOT\Interface\{00000124-0000-0000-C000-000000000046} = IDebugStream +HKEY_CLASSES_ROOT\Interface\{00000124-0000-0000-C000-000000000046}\NumMethods = 19 + +HKEY_CLASSES_ROOT\Interface\{00000125-0000-0000-C000-000000000046} = IAdviseSink2 +HKEY_CLASSES_ROOT\Interface\{00000125-0000-0000-C000-000000000046}\BaseInterface = {0000010F-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000125-0000-0000-C000-000000000046}\NumMethods = 9 + +HKEY_CLASSES_ROOT\Interface\{00000126-0000-0000-C000-000000000046} = IRunnableObject +HKEY_CLASSES_ROOT\Interface\{00000126-0000-0000-C000-000000000046}\NumMethods = 8 + +HKEY_CLASSES_ROOT\Interface\{00000127-0000-0000-C000-000000000046} = IViewObject2 +HKEY_CLASSES_ROOT\Interface\{00000127-0000-0000-C000-000000000046}\BaseInterface = {0000010D-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000127-0000-0000-C000-000000000046}\NumMethods = 10 + +HKEY_CLASSES_ROOT\Interface\{00000128-0000-0000-C000-000000000046} = IOleCache2 +HKEY_CLASSES_ROOT\Interface\{00000128-0000-0000-C000-000000000046}\BaseInterface = {0000011E-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\Interface\{00000128-0000-0000-C000-000000000046}\NumMethods = 10 + +HKEY_CLASSES_ROOT\Interface\{00000129-0000-0000-C000-000000000046} = IOleCacheControl +HKEY_CLASSES_ROOT\Interface\{00000129-0000-0000-C000-000000000046}\NumMethods = 5 + +// +//; registration info for the ole programmability component (automation) +// + +-- IDispatch + +HKEY_CLASSES_ROOT\Interface\{00020400-0000-0000-C000-000000000046} = IDispatch +HKEY_CLASSES_ROOT\Interface\{00020400-0000-0000-C000-000000000046}\NumMethods = 7 +HKEY_CLASSES_ROOT\Interface\{00020400-0000-0000-C000-000000000046}\ProxyStubClsid = {00020420-0000-0000-C000-000000000046} + + +-- IEnumVARIANT + +HKEY_CLASSES_ROOT\Interface\{00020404-0000-0000-C000-000000000046} = IEnumVARIANT +HKEY_CLASSES_ROOT\Interface\{00020404-0000-0000-C000-000000000046}\NumMethods = 7 +HKEY_CLASSES_ROOT\Interface\{00020404-0000-0000-C000-000000000046}\ProxyStubClsid = {00020421-0000-0000-C000-000000000046} + + +-- ITypeInfo + +HKEY_CLASSES_ROOT\Interface\{00020401-0000-0000-C000-000000000046} = ITypeInfo +HKEY_CLASSES_ROOT\Interface\{00020401-0000-0000-C000-000000000046}\NumMethods = 22 +HKEY_CLASSES_ROOT\Interface\{00020401-0000-0000-C000-000000000046}\ProxyStubClsid = {00020422-0000-0000-C000-000000000046} + + +-- ITypeLib + +HKEY_CLASSES_ROOT\Interface\{00020402-0000-0000-C000-000000000046} = ITypeLib +HKEY_CLASSES_ROOT\Interface\{00020402-0000-0000-C000-000000000046}\NumMethods = 13 + + +-- ITypeComp + +HKEY_CLASSES_ROOT\Interface\{00020403-0000-0000-C000-000000000046} = ITypeComp +HKEY_CLASSES_ROOT\Interface\{00020403-0000-0000-C000-000000000046}\NumMethods = 5 + +-- ICreateTypeInfo + +HKEY_CLASSES_ROOT\Interface\{00020405-0000-0000-C000-000000000046} = ICreateTypeInfo +HKEY_CLASSES_ROOT\Interface\{00020405-0000-0000-C000-000000000046}\NumMethods = 26 + + +-- ICreateTypeLib + +HKEY_CLASSES_ROOT\Interface\{00020406-0000-0000-C000-000000000046} = ICreateTypeLib +HKEY_CLASSES_ROOT\Interface\{00020406-0000-0000-C000-000000000046}\NumMethods = 13 + + +-- OLE Automation stdole.tlb registration + +HKEY_CLASSES_ROOT\TypeLib\{00020430-0000-0000-C000-000000000046} +HKEY_CLASSES_ROOT\TypeLib\{00020430-0000-0000-C000-000000000046}\1.0 = OLE Automation +HKEY_CLASSES_ROOT\TypeLib\{00020430-0000-0000-C000-000000000046}\1.0\HELPDIR = +HKEY_CLASSES_ROOT\TypeLib\{00020430-0000-0000-C000-000000000046}\1.0\0\win16 = stdole.tlb + + +-- Registration info for OLE Automation private classes + +HKEY_CLASSES_ROOT\CLSID\{00020420-0000-0000-C000-000000000046} = PSDispatch +HKEY_CLASSES_ROOT\CLSID\{00020420-0000-0000-C000-000000000046}\InprocServer = ole2disp.dll + +HKEY_CLASSES_ROOT\CLSID\{00020422-0000-0000-C000-000000000046} = PSTypeInfo +HKEY_CLASSES_ROOT\CLSID\{00020422-0000-0000-C000-000000000046}\InprocServer = ole2disp.dll + +HKEY_CLASSES_ROOT\CLSID\{00020421-0000-0000-C000-000000000046} = PSEnumVARIANT +HKEY_CLASSES_ROOT\CLSID\{00020421-0000-0000-C000-000000000046}\InprocServer = ole2disp.dll + + diff --git a/private/oleauto/ole/win16/ole2dbg.h b/private/oleauto/ole/win16/ole2dbg.h new file mode 100644 index 000000000..34fbf8384 --- /dev/null +++ b/private/oleauto/ole/win16/ole2dbg.h @@ -0,0 +1,19 @@ +/* + ole2dbg.h: This header file contains the function declarations for the publicly + exported debugging interfaces. + + Include *after* standard OLE2 includes. + + Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. +*/ + +#ifndef __OLE2DBG_H +#define __OLE2DBG_H + +STDAPI_(void) DbgDumpObject( IUnknown FAR * pUnk, DWORD dwReserved); +STDAPI_(void) DbgDumpExternalObject( IUnknown FAR * pUnk, DWORD dwReserved ); + +STDAPI_(BOOL) DbgIsObjectValid( IUnknown FAR * pUnk ); +STDAPI_(void) DbgDumpClassName( IUnknown FAR * pUnk ); + +#endif diff --git a/private/oleauto/ole/win16/ole2ver.h b/private/oleauto/ole/win16/ole2ver.h new file mode 100644 index 000000000..5cbde9a99 --- /dev/null +++ b/private/oleauto/ole/win16/ole2ver.h @@ -0,0 +1,5 @@ +#define rmj 0 +#define rmm 23 +#define rup 639 +#define szVerName "" +#define szVerUser "Y-OLEBLD" diff --git a/private/oleauto/ole/win16/oleguid.h b/private/oleauto/ole/win16/oleguid.h new file mode 100644 index 000000000..723fa50d7 --- /dev/null +++ b/private/oleauto/ole/win16/oleguid.h @@ -0,0 +1,80 @@ +/*****************************************************************************\ +* * +* oleguid.h - Master definition of GUIDs for ole2.dll * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + +/* this file is the master definition of all public GUIDs specific to OLE + and is included in ole2.h. + + NOTE: The second least significant byte of all of these GUIDs is 1. +*/ + + +DEFINE_OLEGUID(IID_IEnumUnknown, 0x00000100, 0, 0); +DEFINE_OLEGUID(IID_IEnumString, 0x00000101, 0, 0); +DEFINE_OLEGUID(IID_IEnumMoniker, 0x00000102, 0, 0); +DEFINE_OLEGUID(IID_IEnumFORMATETC, 0x00000103, 0, 0); +DEFINE_OLEGUID(IID_IEnumOLEVERB, 0x00000104, 0, 0); +DEFINE_OLEGUID(IID_IEnumSTATDATA, 0x00000105, 0, 0); + +DEFINE_OLEGUID(IID_IEnumGeneric, 0x00000106, 0, 0); +DEFINE_OLEGUID(IID_IEnumHolder, 0x00000107, 0, 0); +DEFINE_OLEGUID(IID_IEnumCallback, 0x00000108, 0, 0); + +DEFINE_OLEGUID(IID_IPersistStream, 0x00000109, 0, 0); +DEFINE_OLEGUID(IID_IPersistStorage, 0x0000010a, 0, 0); +DEFINE_OLEGUID(IID_IPersistFile, 0x0000010b, 0, 0); +DEFINE_OLEGUID(IID_IPersist, 0x0000010c, 0, 0); + +DEFINE_OLEGUID(IID_IViewObject, 0x0000010d, 0, 0); +DEFINE_OLEGUID(IID_IDataObject, 0x0000010e, 0, 0); +DEFINE_OLEGUID(IID_IAdviseSink, 0x0000010f, 0, 0); +DEFINE_OLEGUID(IID_IDataAdviseHolder, 0x00000110, 0, 0); +DEFINE_OLEGUID(IID_IOleAdviseHolder, 0x00000111, 0, 0); + +DEFINE_OLEGUID(IID_IOleObject, 0x00000112, 0, 0); +DEFINE_OLEGUID(IID_IOleInPlaceObject, 0x00000113, 0, 0); +DEFINE_OLEGUID(IID_IOleWindow, 0x00000114, 0, 0); +DEFINE_OLEGUID(IID_IOleInPlaceUIWindow, 0x00000115, 0, 0); +DEFINE_OLEGUID(IID_IOleInPlaceFrame, 0x00000116, 0, 0); +DEFINE_OLEGUID(IID_IOleInPlaceActiveObject, 0x00000117, 0, 0); + +DEFINE_OLEGUID(IID_IOleClientSite, 0x00000118, 0, 0); +DEFINE_OLEGUID(IID_IOleInPlaceSite, 0x00000119, 0, 0); + +DEFINE_OLEGUID(IID_IParseDisplayName, 0x0000011a, 0, 0); +DEFINE_OLEGUID(IID_IOleContainer, 0x0000011b, 0, 0); +DEFINE_OLEGUID(IID_IOleItemContainer, 0x0000011c, 0, 0); + +DEFINE_OLEGUID(IID_IOleLink, 0x0000011d, 0, 0); +DEFINE_OLEGUID(IID_IOleCache, 0x0000011e, 0, 0); +DEFINE_OLEGUID(IID_IOleManager, 0x0000011f, 0, 0); // unused +DEFINE_OLEGUID(IID_IOlePresObj, 0x00000120, 0, 0); + +DEFINE_OLEGUID(IID_IDropSource, 0x00000121, 0, 0); +DEFINE_OLEGUID(IID_IDropTarget, 0x00000122, 0, 0); + +DEFINE_OLEGUID(IID_IDebug, 0x00000123, 0, 0); +DEFINE_OLEGUID(IID_IDebugStream, 0x00000124, 0, 0); + +DEFINE_OLEGUID(IID_IAdviseSink2, 0x00000125, 0, 0); + +DEFINE_OLEGUID(IID_IRunnableObject, 0x00000126, 0, 0); + +DEFINE_OLEGUID(IID_IViewObject2, 0x00000127, 0, 0); +DEFINE_OLEGUID(IID_IOleCache2, 0x00000128, 0, 0); +DEFINE_OLEGUID(IID_IOleCacheControl, 0x00000129, 0, 0); + +/* NOTE: LSB values 0x27 through 0xff are reserved */ + + +/* GUIDs defined in OLE's private range */ +DEFINE_OLEGUID(CLSID_Picture_Metafile, 0x00000315, 0, 0); +DEFINE_OLEGUID(CLSID_Picture_Dib, 0x00000316, 0, 0); + + diff --git a/private/oleauto/ole/win16/scode.h b/private/oleauto/ole/win16/scode.h new file mode 100644 index 000000000..cbfb2751c --- /dev/null +++ b/private/oleauto/ole/win16/scode.h @@ -0,0 +1,283 @@ +/*****************************************************************************\ +* * +* scode.h - Defines standard status code services. * +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + + +#ifndef __SCODE_H__ +#define __SCODE_H__ + +// +// SCODE +// + +typedef long SCODE; +typedef SCODE *PSCODE; +typedef void FAR * HRESULT; +#define NOERROR 0 + +// +// Status values are 32 bit values layed out as follows: +// +// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 +// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +// +-+---------------------+-------+-------------------------------+ +// |S| Context | Facil | Code | +// +-+---------------------+-------+-------------------------------+ +// +// where +// +// S - is the severity code +// +// 0 - Success +// 1 - Error +// +// Context - context info +// +// Facility - is the facility code +// +// Code - is the facility's status code +// + +// +// Severity values +// + +#define SEVERITY_SUCCESS 0 +#define SEVERITY_ERROR 1 + + + +#define SUCCEEDED(Status) ((SCODE)(Status) >= 0) + +#define FAILED(Status) ((SCODE)(Status)<0) + + +// +// Return the code +// + +#define SCODE_CODE(sc) ((sc) & 0xFFFF) + +// +// Return the facility +// + +#define SCODE_FACILITY(sc) (((sc) >> 16) & 0x1fff) + +// +// Return the severity +// + +#define SCODE_SEVERITY(sc) (((sc) >> 31) & 0x1) + +// +// Create an SCODE value from component pieces +// + +#define MAKE_SCODE(sev,fac,code) \ + ((SCODE) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) + + + +// --------------------- Functions --------------------------------------- + +#define GetScode(hr) ((SCODE)(hr) & 0x800FFFFF) +#define ResultFromScode(sc) ((HRESULT)((SCODE)(sc) & 0x800FFFFF)) + +STDAPI PropagateResult(HRESULT hrPrev, SCODE scNew); + + +// -------------------------- Facility definitions ------------------------- + +#define FACILITY_NULL 0x0000 // generally useful errors ([SE]_*) +#define FACILITY_RPC 0x0001 // remote procedure call errors (RPC_E_*) +#define FACILITY_DISPATCH 0x0002 // late binding dispatch errors +#define FACILITY_STORAGE 0x0003 // storage errors (STG_E_*) +#define FACILITY_ITF 0x0004 // interface-specific errors + + + +#define S_OK 0L +#define S_FALSE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_NULL, 1) + + + +// --------------------- FACILITY_NULL errors ------------------------------ + +#define E_UNEXPECTED MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 0xffff) + // relatively catastrophic failure + +#define E_NOTIMPL MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 1) + // not implemented + +#define E_OUTOFMEMORY MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 2) + // ran out of memory + +#define E_INVALIDARG MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 3) + // one or more arguments are invalid + +#define E_NOINTERFACE MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 4) + // no such interface supported + + +#define E_POINTER MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 5) + // invalid pointer + +#define E_HANDLE MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 6) + // invalid handle + +#define E_ABORT MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 7) + // operation aborted + +#define E_FAIL MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 8) + // unspecified error + + +#define E_ACCESSDENIED MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 9) + // general access denied error + + +// ----------------- FACILITY_ITF errors used by OLE --------------------- +// +// By convention, OLE interfaces divide the FACILITY_ITF range of errors +// into nonoverlapping subranges. If an OLE interface returns a FACILITY_ITF +// scode, it must be from the range associated with that interface or from +// the shared range: OLE_E_FIRST...OLE_E_LAST. +// +// The ranges, their associated interfaces, and the header file that defines +// the actual scodes are given below. +// + +// Generic OLE errors that may be returned by many interfaces +#define OLE_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0000) +#define OLE_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x00FF) +#define OLE_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0000) +#define OLE_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x00FF) +// interfaces: all +// file: ole2.h + + +#define DRAGDROP_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0100) +#define DRAGDROP_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x010F) +#define DRAGDROP_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0100) +#define DRAGDROP_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x010F) +// interfaces: IDropSource, IDropTarget +// file: ole2.h + +#define CLASSFACTORY_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0110) +#define CLASSFACTORY_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x011F) +#define CLASSFACTORY_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0110) +#define CLASSFACTORY_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x011F) +// interfaces: IClassFactory +// file: + +#define MARSHAL_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0120) +#define MARSHAL_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x012F) +#define MARSHAL_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0120) +#define MARSHAL_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x012F) +// interfaces: IMarshal, IStdMarshalInfo, marshal APIs +// file: + +#define DATA_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0130) +#define DATA_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x013F) +#define DATA_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0130) +#define DATA_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x013F) +// interfaces: IDataObject +// file: dvobj.h + +#define VIEW_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0140) +#define VIEW_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x014F) +#define VIEW_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0140) +#define VIEW_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x014F) +// interfaces: IViewObject +// file: dvobj.h + +#define REGDB_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0150) +#define REGDB_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x015F) +#define REGDB_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0150) +#define REGDB_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x015F) +// API: reg.dat manipulation +// file: + + +// range 160 - 16F reserved + +#define CACHE_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0170) +#define CACHE_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x017F) +#define CACHE_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0170) +#define CACHE_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x017F) +// interfaces: IOleCache +// file: + +#define OLEOBJ_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0180) +#define OLEOBJ_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x018F) +#define OLEOBJ_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0180) +#define OLEOBJ_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x018F) +// interfaces: IOleObject +// file: + +#define CLIENTSITE_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0190) +#define CLIENTSITE_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x019F) +#define CLIENTSITE_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0190) +#define CLIENTSITE_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x019F) +// interfaces: IOleClientSite +// file: + +#define INPLACE_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01A0) +#define INPLACE_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01AF) +#define INPLACE_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01A0) +#define INPLACE_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01AF) +// interfaces: IOleWindow, IOleInPlaceObject, IOleInPlaceActiveObject, +// IOleInPlaceUIWindow, IOleInPlaceFrame, IOleInPlaceSite +// file: + +#define ENUM_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01B0) +#define ENUM_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01BF) +#define ENUM_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01B0) +#define ENUM_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01BF) +// interfaces: IEnum* +// file: + +#define CONVERT10_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01C0) +#define CONVERT10_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01CF) +#define CONVERT10_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01C0) +#define CONVERT10_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01CF) +// API: OleConvertOLESTREAMToIStorage, OleConvertIStorageToOLESTREAM +// file: + + +#define CLIPBRD_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01D0) +#define CLIPBRD_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01DF) +#define CLIPBRD_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01D0) +#define CLIPBRD_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01DF) +// interfaces: OleSetClipboard, OleGetClipboard, OleFlushClipboard +// file: ole2.h + +#define MK_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01E0) +#define MK_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01EF) +#define MK_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01E0) +#define MK_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01EF) +// interfaces: IMoniker, IBindCtx, IRunningObjectTable, IParseDisplayName, +// IOleContainer, IOleItemContainer, IOleLink +// file: moniker.h + + +#define CO_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01F0) +#define CO_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x01FF) +#define CO_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01F0) +#define CO_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x01FF) +// all Co* API +// file: compobj.h + + +// range 200 - ffff for new error codes + + + +#endif // ifndef __SCODE_H__ diff --git a/private/oleauto/ole/win16/storage.h b/private/oleauto/ole/win16/storage.h new file mode 100644 index 000000000..e111c1d8f --- /dev/null +++ b/private/oleauto/ole/win16/storage.h @@ -0,0 +1,457 @@ +/*****************************************************************************\ +* * +* storage.h - Definitions for the strutured storage system +* * +* OLE Version 2.0 * +* * +* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * +* * +\*****************************************************************************/ + + +#if !defined( _STORAGE_H_ ) +#define _STORAGE_H_ + + +#include <compobj.h> + + +/****** Storage Error Codes *************************************************/ + +/* DOS-based error codes */ +#define STG_E_INVALIDFUNCTION \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x01) + +#define STG_E_FILENOTFOUND \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x02) + +#define STG_E_PATHNOTFOUND \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x03) + +#define STG_E_TOOMANYOPENFILES \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x04) + +#define STG_E_ACCESSDENIED \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x05) + +#define STG_E_INVALIDHANDLE \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x06) + +#define STG_E_INSUFFICIENTMEMORY \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x08) + +#define STG_E_INVALIDPOINTER \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x09) + +#define STG_E_NOMOREFILES \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x12) + +#define STG_E_DISKISWRITEPROTECTED \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x13) + +#define STG_E_SEEKERROR \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x19) + +#define STG_E_WRITEFAULT \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x1d) + +#define STG_E_READFAULT \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x1e) + +#define STG_E_SHAREVIOLATION \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x20) + +#define STG_E_LOCKVIOLATION \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x21) + +#define STG_E_FILEALREADYEXISTS \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x50) + +#define STG_E_INVALIDPARAMETER \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x57) + +#define STG_E_MEDIUMFULL \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x70) + +#define STG_E_ABNORMALAPIEXIT \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfa) + +#define STG_E_INVALIDHEADER \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfb) + +#define STG_E_INVALIDNAME \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfc) + +#define STG_E_UNKNOWN \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfd) + +#define STG_E_UNIMPLEMENTEDFUNCTION\ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfe) + +#define STG_E_INVALIDFLAG \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xff) + +/* Standard storage error codes */ +#define STG_E_INUSE \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x100) + +#define STG_E_NOTCURRENT \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x101) + +#define STG_E_REVERTED \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x102) + +#define STG_E_CANTSAVE \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x103) + +#define STG_E_OLDFORMAT \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x104) + +#define STG_E_OLDDLL \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x105) + +#define STG_E_SHAREREQUIRED \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x106) + +#define STG_E_NOTFILEBASEDSTORAGE \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x107) + +#define STG_E_EXTANTMARSHALLINGS \ + MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x108) + +/* Information returns */ +#define STG_S_CONVERTED \ + MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_STORAGE, 0x200) + +/****** Storage types *******************************************************/ + +#if defined(_M_I286) +typedef char TCHAR; +#ifndef HUGEP +#define HUGEP _huge +#endif +#else +typedef char TCHAR; +#ifndef HUGEP +#define HUGEP +#endif +#endif + +#define CWCSTORAGENAME 32 + +/* Storage instantiation modes */ +#define STGM_DIRECT 0x00000000L +#define STGM_TRANSACTED 0x00010000L + +#define STGM_READ 0x00000000L +#define STGM_WRITE 0x00000001L +#define STGM_READWRITE 0x00000002L + +#define STGM_SHARE_DENY_NONE 0x00000040L +#define STGM_SHARE_DENY_READ 0x00000030L +#define STGM_SHARE_DENY_WRITE 0x00000020L +#define STGM_SHARE_EXCLUSIVE 0x00000010L + +#define STGM_PRIORITY 0x00040000L +#define STGM_DELETEONRELEASE 0x04000000L + +#define STGM_CREATE 0x00001000L +#define STGM_CONVERT 0x00020000L +#define STGM_FAILIFTHERE 0x00000000L + +/* Storage commit types */ +typedef enum tagSTGC +{ + STGC_DEFAULT = 0, + STGC_OVERWRITE = 1, + STGC_ONLYIFCURRENT = 2, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4 +} STGC; + +/* Stream name block definitions */ +typedef char FAR * FAR *SNB; + + +#ifndef _WINDOWS_ +#ifndef _FILETIME_ +#define _FILETIME_ +typedef struct FARSTRUCT tagFILETIME +{ + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} FILETIME; +#endif +#endif + + +/* Storage stat buffer */ + +typedef struct FARSTRUCT tagSTATSTG +{ + char FAR* pwcsName; + DWORD type; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD grfMode; + DWORD grfLocksSupported; + CLSID clsid; + DWORD grfStateBits; + DWORD reserved; +} STATSTG; + + +/* Storage element types */ +typedef enum tagSTGTY +{ + STGTY_STORAGE = 1, + STGTY_STREAM = 2, + STGTY_LOCKBYTES = 3, + STGTY_PROPERTY = 4 +} STGTY; + +typedef enum tagSTREAM_SEEK +{ + STREAM_SEEK_SET = 0, + STREAM_SEEK_CUR = 1, + STREAM_SEEK_END = 2 +} STREAM_SEEK; + +typedef enum tagLOCKTYPE +{ + LOCK_WRITE = 1, + LOCK_EXCLUSIVE = 2, + LOCK_ONLYONCE = 4 +} LOCKTYPE; + +typedef enum tagSTGMOVE +{ + STGMOVE_MOVE = 0, + STGMOVE_COPY = 1 +} STGMOVE; + +typedef enum tagSTATFLAG +{ + STATFLAG_DEFAULT = 0, + STATFLAG_NONAME = 1 +} STATFLAG; + + +/****** Storage Enumerators *************************************************/ + +#undef INTERFACE +#define INTERFACE IEnumSTATSTG + +DECLARE_INTERFACE_(IEnumSTATSTG, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IENUMSTATSTG methods *** + STDMETHOD(Next) (THIS_ ULONG celt, STATSTG FAR * rgelt, ULONG FAR *pceltFetched) PURE; + STDMETHOD(Skip) (THIS_ ULONG celt) PURE; + STDMETHOD(Reset) (THIS) PURE; + STDMETHOD(Clone) (THIS_ IEnumSTATSTG FAR *FAR *ppenm) PURE; +}; + +typedef IEnumSTATSTG FAR* LPENUMSTATSTG; + + + +/****** ILockBytes Interface ************************************************/ + +#undef INTERFACE +#define INTERFACE ILockBytes + +DECLARE_INTERFACE_(ILockBytes, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** ILockBytes methods *** + STDMETHOD(ReadAt) (THIS_ ULARGE_INTEGER ulOffset, + VOID HUGEP *pv, + ULONG cb, + ULONG FAR *pcbRead) PURE; + STDMETHOD(WriteAt) (THIS_ ULARGE_INTEGER ulOffset, + VOID const HUGEP *pv, + ULONG cb, + ULONG FAR *pcbWritten) PURE; + STDMETHOD(Flush) (THIS) PURE; + STDMETHOD(SetSize) (THIS_ ULARGE_INTEGER cb) PURE; + STDMETHOD(LockRegion) (THIS_ ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType) PURE; + STDMETHOD(UnlockRegion) (THIS_ ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType) PURE; + STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE; +}; + +typedef ILockBytes FAR* LPLOCKBYTES; + + + +/****** IStream Interface ***************************************************/ + + +#undef INTERFACE +#define INTERFACE IStream + +DECLARE_INTERFACE_(IStream, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IStream methods *** + STDMETHOD(Read) (THIS_ VOID HUGEP *pv, + ULONG cb, ULONG FAR *pcbRead) PURE; + STDMETHOD(Write) (THIS_ VOID const HUGEP *pv, + ULONG cb, + ULONG FAR *pcbWritten) PURE; + STDMETHOD(Seek) (THIS_ LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER FAR *plibNewPosition) PURE; + STDMETHOD(SetSize) (THIS_ ULARGE_INTEGER libNewSize) PURE; + STDMETHOD(CopyTo) (THIS_ IStream FAR *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER FAR *pcbRead, + ULARGE_INTEGER FAR *pcbWritten) PURE; + STDMETHOD(Commit) (THIS_ DWORD grfCommitFlags) PURE; + STDMETHOD(Revert) (THIS) PURE; + STDMETHOD(LockRegion) (THIS_ ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType) PURE; + STDMETHOD(UnlockRegion) (THIS_ ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, + DWORD dwLockType) PURE; + STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE; + STDMETHOD(Clone)(THIS_ IStream FAR * FAR *ppstm) PURE; +}; + +typedef IStream FAR* LPSTREAM; + + + +/****** IStorage Interface **************************************************/ + +#undef INTERFACE +#define INTERFACE IStorage + +DECLARE_INTERFACE_(IStorage, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IStorage methods *** + STDMETHOD(CreateStream) (THIS_ const char FAR* pwcsName, + DWORD grfMode, + DWORD reserved1, + DWORD reserved2, + IStream FAR *FAR *ppstm) PURE; + STDMETHOD(OpenStream) (THIS_ const char FAR* pwcsName, + void FAR *reserved1, + DWORD grfMode, + DWORD reserved2, + IStream FAR *FAR *ppstm) PURE; + STDMETHOD(CreateStorage) (THIS_ const char FAR* pwcsName, + DWORD grfMode, + DWORD reserved1, + DWORD reserved2, + IStorage FAR *FAR *ppstg) PURE; + STDMETHOD(OpenStorage) (THIS_ const char FAR* pwcsName, + IStorage FAR *pstgPriority, + DWORD grfMode, + SNB snbExclude, + DWORD reserved, + IStorage FAR *FAR *ppstg) PURE; + STDMETHOD(CopyTo) (THIS_ DWORD ciidExclude, + IID const FAR *rgiidExclude, + SNB snbExclude, + IStorage FAR *pstgDest) PURE; + STDMETHOD(MoveElementTo) (THIS_ char const FAR* lpszName, + IStorage FAR *pstgDest, + char const FAR* lpszNewName, + DWORD grfFlags) PURE; + STDMETHOD(Commit) (THIS_ DWORD grfCommitFlags) PURE; + STDMETHOD(Revert) (THIS) PURE; + STDMETHOD(EnumElements) (THIS_ DWORD reserved1, + void FAR *reserved2, + DWORD reserved3, + IEnumSTATSTG FAR *FAR *ppenm) PURE; + STDMETHOD(DestroyElement) (THIS_ const char FAR* pwcsName) PURE; + STDMETHOD(RenameElement) (THIS_ const char FAR* pwcsOldName, + const char FAR* pwcsNewName) PURE; + STDMETHOD(SetElementTimes) (THIS_ const char FAR *lpszName, + FILETIME const FAR *pctime, + FILETIME const FAR *patime, + FILETIME const FAR *pmtime) PURE; + STDMETHOD(SetClass) (THIS_ REFCLSID clsid) PURE; + STDMETHOD(SetStateBits) (THIS_ DWORD grfStateBits, DWORD grfMask) PURE; + STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE; +}; + +typedef IStorage FAR* LPSTORAGE; + + + +/****** IRootStorage Interface **********************************************/ + +#undef INTERFACE +#define INTERFACE IRootStorage + +DECLARE_INTERFACE_(IRootStorage, IUnknown) +{ + // *** IUnknown methods *** + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // *** IRootStorage methods *** + STDMETHOD(SwitchToFile) (THIS_ LPSTR lpstrFile) PURE; +}; + +typedef IRootStorage FAR* LPROOTSTORAGE; + + + +/****** Storage API Prototypes ********************************************/ + +STDAPI StgCreateDocfile(const char FAR* pwcsName, + DWORD grfMode, + DWORD reserved, + IStorage FAR * FAR *ppstgOpen); +STDAPI StgCreateDocfileOnILockBytes(ILockBytes FAR *plkbyt, + DWORD grfMode, + DWORD reserved, + IStorage FAR * FAR *ppstgOpen); +STDAPI StgOpenStorage(const char FAR* pwcsName, + IStorage FAR *pstgPriority, + DWORD grfMode, + SNB snbExclude, + DWORD reserved, + IStorage FAR * FAR *ppstgOpen); +STDAPI StgOpenStorageOnILockBytes(ILockBytes FAR *plkbyt, + IStorage FAR *pstgPriority, + DWORD grfMode, + SNB snbExclude, + DWORD reserved, + IStorage FAR * FAR *ppstgOpen); +STDAPI StgIsStorageFile(const char FAR* pwcsName); +STDAPI StgIsStorageILockBytes(ILockBytes FAR* plkbyt); + +STDAPI StgSetTimes(char const FAR* lpszName, + FILETIME const FAR* pctime, + FILETIME const FAR* patime, + FILETIME const FAR* pmtime); + +#endif |