summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/Graphics/shaderlib/wine/include/objidl.idl
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Devices/Graphics/shaderlib/wine/include/objidl.idl')
-rw-r--r--src/VBox/Devices/Graphics/shaderlib/wine/include/objidl.idl2531
1 files changed, 2531 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaderlib/wine/include/objidl.idl b/src/VBox/Devices/Graphics/shaderlib/wine/include/objidl.idl
new file mode 100644
index 00000000..a94d18fe
--- /dev/null
+++ b/src/VBox/Devices/Graphics/shaderlib/wine/include/objidl.idl
@@ -0,0 +1,2531 @@
+/*
+ * Copyright 2002 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+interface IStream;
+interface IEnumString;
+interface IRunningObjectTable;
+interface IMoniker;
+interface IAdviseSink;
+interface IAsyncManager;
+interface ISynchronize;
+
+typedef struct _COSERVERINFO {
+ DWORD dwReserved1;
+ LPWSTR pwszName;
+ COAUTHINFO *pAuthInfo;
+ DWORD dwReserved2;
+} COSERVERINFO;
+
+/******************** Fundamentals ********************/
+
+[
+ local,
+ object,
+ uuid(00000003-0000-0000-C000-000000000046)
+]
+interface IMarshal : IUnknown
+{
+ typedef [unique] IMarshal *LPMARSHAL;
+
+ HRESULT GetUnmarshalClass(
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags,
+ [out] CLSID *pCid);
+
+ HRESULT GetMarshalSizeMax(
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags,
+ [out] DWORD *pSize);
+
+ HRESULT MarshalInterface(
+ [in, unique] IStream *pStm,
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags);
+
+ HRESULT UnmarshalInterface(
+ [in, unique] IStream *pStm,
+ [in] REFIID riid,
+ [out] void **ppv);
+
+ HRESULT ReleaseMarshalData(
+ [in, unique] IStream *pStm);
+
+ HRESULT DisconnectObject(
+ [in] DWORD dwReserved);
+}
+
+[
+ local,
+ object,
+ uuid(000001cf-0000-0000-C000-000000000046)
+]
+interface IMarshal2 : IMarshal
+{
+ typedef [unique] IMarshal2 *LPMARSHAL2;
+}
+
+[
+ local,
+ object,
+ uuid(00000018-0000-0000-C000-000000000046)
+]
+interface IStdMarshalInfo : IUnknown
+{
+ typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
+
+ HRESULT GetClassForHandler(
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [out] CLSID *pClsid);
+}
+
+[
+ local,
+ object,
+ uuid(00000019-0000-0000-C000-000000000046)
+]
+interface IExternalConnection : IUnknown
+{
+ typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
+
+ typedef enum tagEXTCONN {
+ EXTCONN_STRONG = 0x0001,
+ EXTCONN_WEAK = 0x0002,
+ EXTCONN_CALLABLE = 0x0004
+ } EXTCONN;
+
+ DWORD AddConnection(
+ [in] DWORD extconn,
+ [in] DWORD reserved);
+
+ DWORD ReleaseConnection(
+ [in] DWORD extconn,
+ [in] DWORD reserved,
+ [in] BOOL fLastReleaseCloses);
+}
+
+[
+ local,
+ object,
+ uuid(00000020-0000-0000-C000-000000000046)
+]
+interface IMultiQI : IUnknown
+{
+ typedef [unique] IMultiQI *LPMULTIQI;
+
+ typedef struct tagMULTI_QI {
+ const IID *pIID;
+ IUnknown *pItf;
+ HRESULT hr;
+ } MULTI_QI;
+
+ HRESULT QueryMultipleInterfaces(
+ [in] ULONG cMQIs,
+ [in, out] MULTI_QI *pMQIs);
+}
+
+[
+ local,
+ object,
+ uuid(00000002-0000-0000-C000-000000000046)
+]
+interface IMalloc : IUnknown
+{
+ typedef [unique] IMalloc *LPMALLOC;
+
+ LPVOID Alloc(
+ [in] ULONG cb);
+
+ LPVOID Realloc(
+ [in] LPVOID pv,
+ [in] ULONG cb);
+
+ void Free(
+ [in] LPVOID pv);
+
+ ULONG GetSize(
+ [in] LPVOID pv);
+
+ int DidAlloc(LPVOID pv);
+
+ void HeapMinimize();
+}
+
+[
+ local,
+ object,
+ uuid(0000001d-0000-0000-C000-000000000046)
+]
+interface IMallocSpy : IUnknown
+{
+ typedef [unique] IMallocSpy *LPMALLOCSPY;
+
+ ULONG PreAlloc(
+ [in] ULONG cbRequest);
+
+ LPVOID PostAlloc(
+ [in] LPVOID pActual);
+
+ LPVOID PreFree(
+ [in] LPVOID pRequest,
+ [in] BOOL fSpyed);
+
+ void PostFree(
+ [in] BOOL fSpyed);
+
+ ULONG PreRealloc(
+ [in] LPVOID pRequest,
+ [in] ULONG cbRequest,
+ [out] LPVOID *ppNewRequest,
+ [in] BOOL fSpyed);
+
+ LPVOID PostRealloc(
+ [in] LPVOID pActual,
+ [in] BOOL fSpyed);
+
+ LPVOID PreGetSize(
+ [in] LPVOID pRequest,
+ [in] BOOL fSpyed);
+
+ ULONG PostGetSize(
+ [in] ULONG cbActual,
+ [in] BOOL fSpyed);
+
+ LPVOID PreDidAlloc(
+ [in] LPVOID pRequest,
+ [in] BOOL fSpyed);
+
+ int PostDidAlloc(
+ [in] LPVOID pRequest,
+ [in] BOOL fSpyed,
+ [in] int fActual);
+
+ void PreHeapMinimize();
+
+ void PostHeapMinimize();
+}
+
+[
+ local,
+ object,
+ uuid(00000021-0000-0000-C000-000000000046)
+]
+interface IInternalUnknown : IUnknown
+{
+ HRESULT QueryInternalInterface(
+ [in] REFIID riid,
+ [out] void **ppv);
+}
+
+[
+ object,
+ uuid(00000100-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IEnumUnknown : IUnknown
+{
+ typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out] IUnknown **rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IUnknown **rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumUnknown **ppenum);
+}
+
+[
+ object,
+ uuid(00000022-0000-0000-C000-000000000046),
+ version(1.0),
+ pointer_default(unique)
+]
+interface ISurrogate : IUnknown
+{
+ typedef [unique] ISurrogate *LPSURROGATE;
+
+ HRESULT LoadDllServer(
+ [in] REFCLSID Clsid);
+ HRESULT FreeSurrogate();
+}
+
+[
+ local,
+ object,
+ uuid(00000146-0000-0000-C000-000000000046)
+]
+interface IGlobalInterfaceTable : IUnknown
+{
+ typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
+
+ HRESULT RegisterInterfaceInGlobal(
+ [in] IUnknown *pUnk,
+ [in] REFIID riid,
+ [out] DWORD *pdwCookie);
+
+ HRESULT RevokeInterfaceFromGlobal(
+ [in] DWORD dwCookie);
+
+ HRESULT GetInterfaceFromGlobal(
+ [in] DWORD dwCookie,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppv);
+}
+
+/******************** Monikers ********************/
+
+[
+ object,
+ uuid(0000000e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IBindCtx : IUnknown
+{
+ typedef [unique] IBindCtx *LPBINDCTX;
+ typedef [unique] IBindCtx *LPBC;
+
+ typedef struct tagBIND_OPTS {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ } BIND_OPTS, *LPBIND_OPTS;
+
+ /* FIXME: C++ crap */
+ typedef struct tagBIND_OPTS2 {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO *pServerInfo;
+ } BIND_OPTS2, *LPBIND_OPTS2;
+
+ typedef struct tagBIND_OPTS3 {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO *pServerInfo;
+ HWND hwnd;
+ } BIND_OPTS3, *LPBIND_OPTS3;
+
+ typedef enum tagBIND_FLAGS {
+ BIND_MAYBOTHERUSER = 1,
+ BIND_JUSTTESTEXISTENCE = 2
+ } BIND_FLAGS;
+
+ HRESULT RegisterObjectBound(
+ [in, unique] IUnknown *punk);
+
+ HRESULT RevokeObjectBound(
+ [in, unique] IUnknown *punk);
+
+ HRESULT ReleaseBoundObjects();
+
+ [local]
+ HRESULT SetBindOptions(
+ [in] BIND_OPTS *pbindopts);
+
+ [call_as(SetBindOptions)]
+ HRESULT RemoteSetBindOptions(
+ [in] BIND_OPTS2 *pbindopts);
+
+ [local]
+ HRESULT GetBindOptions(
+ [in, out] BIND_OPTS *pbindopts);
+
+ [call_as(GetBindOptions)]
+ HRESULT RemoteGetBindOptions(
+ [in, out] BIND_OPTS2 *pbindopts);
+
+ HRESULT GetRunningObjectTable(
+ [out] IRunningObjectTable **pprot);
+
+ HRESULT RegisterObjectParam(
+ [in] LPOLESTR pszKey,
+ [in, unique] IUnknown *punk);
+
+ HRESULT GetObjectParam(
+ [in] LPOLESTR pszKey,
+ [out] IUnknown **ppunk);
+
+ HRESULT EnumObjectParam(
+ [out] IEnumString **ppenum);
+
+ HRESULT RevokeObjectParam(
+ [in] LPOLESTR pszKey);
+}
+
+[
+ object,
+ uuid(00000102-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IEnumMoniker : IUnknown
+{
+ typedef [unique] IEnumMoniker *LPENUMMONIKER;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IMoniker **rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IMoniker **rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumMoniker **ppenum);
+}
+
+[
+ object,
+ uuid(00000126-0000-0000-C000-000000000046)
+]
+interface IRunnableObject : IUnknown
+{
+ typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
+
+ HRESULT GetRunningClass(
+ [out] LPCLSID lpClsid);
+
+ HRESULT Run(
+ [in] LPBINDCTX pbc);
+
+ [local]
+ BOOL IsRunning();
+
+ [call_as(IsRunning)]
+ HRESULT RemoteIsRunning();
+
+ HRESULT LockRunning(
+ [in] BOOL fLock,
+ [in] BOOL fLastUnlockCloses);
+
+ HRESULT SetContainedObject(
+ [in] BOOL fContained);
+}
+
+/* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
+ * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
+ * but GetObject is used as a valid method name below, so we have
+ * to undefine it in that case */
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetObject")
+cpp_quote("#endif")
+
+[
+ object,
+ uuid(00000010-0000-0000-C000-000000000046)
+]
+interface IRunningObjectTable : IUnknown
+{
+ typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
+
+ HRESULT Register(
+ [in] DWORD grfFlags,
+ [in, unique] IUnknown *punkObject,
+ [in, unique] IMoniker *pmkObjectName,
+ [out] DWORD *pdwRegister);
+
+ HRESULT Revoke(
+ [in] DWORD dwRegister);
+
+ HRESULT IsRunning(
+ [in, unique] IMoniker *pmkObjectName);
+
+ HRESULT GetObject(
+ [in, unique] IMoniker *pmkObjectName,
+ [out] IUnknown **ppunkObject);
+
+ HRESULT NoteChangeTime(
+ [in] DWORD dwRegister,
+ [in] FILETIME *pfiletime);
+
+ HRESULT GetTimeOfLastChange(
+ [in, unique] IMoniker *pmkObjectName,
+ [out] FILETIME *pfiletime);
+
+ HRESULT EnumRunning(
+ [out] IEnumMoniker **ppenumMoniker);
+}
+
+[
+ object,
+ uuid(0000010c-0000-0000-C000-000000000046)
+]
+interface IPersist : IUnknown
+{
+ typedef [unique] IPersist *LPPERSIST;
+
+ HRESULT GetClassID(
+ [out] CLSID *pClassID);
+}
+
+[
+ object,
+ uuid(00000109-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IPersistStream : IPersist
+{
+ typedef [unique] IPersistStream *LPPERSISTSTREAM;
+
+ HRESULT IsDirty();
+
+ HRESULT Load(
+ [in, unique] IStream *pStm);
+
+ HRESULT Save(
+ [in, unique] IStream *pStm,
+ [in] BOOL fClearDirty);
+
+ HRESULT GetSizeMax(
+ [out] ULARGE_INTEGER *pcbSize);
+}
+
+[
+ object,
+ uuid(0000000f-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IMoniker : IPersistStream
+{
+ typedef [unique] IMoniker *LPMONIKER;
+
+ typedef enum tagMKSYS {
+ MKSYS_NONE = 0,
+ MKSYS_GENERICCOMPOSITE = 1,
+ MKSYS_FILEMONIKER = 2,
+ MKSYS_ANTIMONIKER = 3,
+ MKSYS_ITEMMONIKER = 4,
+ MKSYS_POINTERMONIKER = 5,
+ /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
+ MKSYS_CLASSMONIKER = 7
+ } MKSYS;
+
+ typedef [v1_enum] enum tagMKREDUCE {
+ MKRREDUCE_ONE = 3 << 16,
+ MKRREDUCE_TOUSER = 2 << 16,
+ MKRREDUCE_THROUGHUSER = 1 << 16,
+ MKRREDUCE_ALL = 0
+ } MKRREDUCE;
+
+ [local]
+ HRESULT BindToObject(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] void **ppvResult);
+
+ [call_as(BindToObject)]
+ HRESULT RemoteBindToObject(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] IUnknown **ppvResult);
+
+ [local]
+ HRESULT BindToStorage(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObj);
+
+ [call_as(BindToStorage)]
+ HRESULT RemoteBindToStorage(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvObj);
+
+ HRESULT Reduce(
+ [in, unique] IBindCtx *pbc,
+ [in] DWORD dwReduceHowFar,
+ [in, out, unique] IMoniker **ppmkToLeft,
+ [out] IMoniker **ppmkReduced);
+
+ HRESULT ComposeWith(
+ [in, unique] IMoniker *pmkRight,
+ [in] BOOL fOnlyIfNotGeneric,
+ [out] IMoniker **ppmkComposite);
+
+ HRESULT Enum(
+ [in] BOOL fForward,
+ [out] IEnumMoniker **ppenumMoniker);
+
+ HRESULT IsEqual(
+ [in, unique] IMoniker *pmkOtherMoniker);
+
+ HRESULT Hash(
+ [out] DWORD *pdwHash);
+
+ HRESULT IsRunning(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in, unique] IMoniker *pmkNewlyRunning);
+
+ HRESULT GetTimeOfLastChange(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [out] FILETIME *pFileTime);
+
+ HRESULT Inverse(
+ [out] IMoniker **ppmk);
+
+ HRESULT CommonPrefixWith(
+ [in, unique] IMoniker *pmkOther,
+ [out] IMoniker **ppmkPrefix);
+
+ HRESULT RelativePathTo(
+ [in, unique] IMoniker *pmkOther,
+ [out] IMoniker **ppmkRelPath);
+
+ HRESULT GetDisplayName(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [out] LPOLESTR *ppszDisplayName);
+
+ HRESULT ParseDisplayName(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] LPOLESTR pszDisplayName,
+ [out] ULONG *pchEaten,
+ [out] IMoniker **ppmkOut);
+
+ HRESULT IsSystemMoniker(
+ [out] DWORD *pdwMksys);
+}
+
+[
+ object,
+ uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
+ pointer_default(unique)
+]
+interface IROTData : IUnknown
+{
+ HRESULT GetComparisonData(
+ [out, size_is(cbMax)] byte *pbData,
+ [in] ULONG cbMax,
+ [out] ULONG *pcbData);
+}
+
+[
+ object,
+ uuid(00000101-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IEnumString : IUnknown
+{
+ typedef [unique] IEnumString *LPENUMSTRING;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLESTR *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLESTR *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumString **ppenum);
+}
+
+[
+ object,
+ uuid(00000140-0000-0000-C000-000000000046)
+]
+interface IClassActivator : IUnknown
+{
+ HRESULT GetClassObject(
+ [in] REFCLSID rclsid,
+ [in] DWORD dwClassContext,
+ [in] LCID locale,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppv);
+}
+
+/******************** Storage ********************/
+
+[
+ object,
+ uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
+ pointer_default(unique)
+]
+interface ISequentialStream : IUnknown
+{
+ [local]
+ HRESULT Read(
+ [out, size_is(cb), length_is(*pcbRead)]
+ void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [call_as(Read)]
+ HRESULT RemoteRead(
+ [out, size_is(cb), length_is(*pcbRead)]
+ byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [local]
+ HRESULT Write(
+ [in, size_is(cb)] const void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(Write)]
+ HRESULT RemoteWrite(
+ [in, size_is(cb)] const byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+}
+
+[
+ object,
+ uuid(0000000c-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IStream : ISequentialStream
+{
+ typedef [unique] IStream *LPSTREAM;
+
+ typedef struct tagSTATSTG {
+ LPOLESTR pwcsName;
+ DWORD type;
+ ULARGE_INTEGER cbSize;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD grfMode;
+ DWORD grfLocksSupported;
+ CLSID clsid;
+ DWORD grfStateBits;
+ DWORD reserved;
+ } STATSTG;
+
+ 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;
+
+ /* these are defined in Linux's fcntl.h,
+ * undefine them to avoid conflicts */
+ cpp_quote("#undef LOCK_MAND")
+ cpp_quote("#undef LOCK_READ")
+ cpp_quote("#undef LOCK_WRITE")
+ cpp_quote("#undef LOCK_RW")
+
+ typedef enum tagLOCKTYPE {
+ LOCK_WRITE = 1,
+ LOCK_EXCLUSIVE = 2,
+ LOCK_ONLYONCE = 4
+ } LOCKTYPE;
+
+ [local]
+ HRESULT Seek(
+ [in] LARGE_INTEGER dlibMove,
+ [in] DWORD dwOrigin,
+ [out] ULARGE_INTEGER *plibNewPosition);
+
+ [call_as(Seek)]
+ HRESULT RemoteSeek(
+ [in] LARGE_INTEGER dlibMove,
+ [in] DWORD dwOrigin,
+ [out] ULARGE_INTEGER *plibNewPosition);
+
+ HRESULT SetSize(
+ [in] ULARGE_INTEGER libNewSize);
+
+ [local]
+ HRESULT CopyTo(
+ [in, unique] IStream *pstm,
+ [in] ULARGE_INTEGER cb,
+ [out] ULARGE_INTEGER *pcbRead,
+ [out] ULARGE_INTEGER *pcbWritten);
+
+ [call_as(CopyTo)]
+ HRESULT RemoteCopyTo(
+ [in, unique] IStream *pstm,
+ [in] ULARGE_INTEGER cb,
+ [out] ULARGE_INTEGER *pcbRead,
+ [out] ULARGE_INTEGER *pcbWritten);
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags);
+
+ HRESULT Revert();
+
+ HRESULT LockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT UnlockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+
+ HRESULT Clone(
+ [out] IStream **ppstm);
+}
+
+[
+ object,
+ uuid(0000000d-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IEnumSTATSTG : IUnknown
+{
+ typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATSTG *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATSTG *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATSTG **ppenum);
+}
+
+[
+ object,
+ uuid(0000000b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IStorage : IUnknown
+{
+ typedef [unique] IStorage *LPSTORAGE;
+
+ typedef struct tagRemSNB {
+ unsigned long ulCntStr;
+ unsigned long ulCntChar;
+ [size_is(ulCntChar)] OLECHAR rgString[];
+ } RemSNB;
+
+ typedef [unique] RemSNB *wireSNB;
+ typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
+
+ HRESULT CreateStream(
+ [in] LPCOLESTR pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD reserved1,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ [local]
+ HRESULT OpenStream(
+ [in] LPCOLESTR pwcsName,
+ [in, unique] void *reserved1,
+ [in] DWORD grfMode,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ [call_as(OpenStream)]
+ HRESULT RemoteOpenStream(
+ [in] LPCOLESTR pwcsName,
+ [in] unsigned long cbReserved1,
+ [in, unique, size_is(cbReserved1)] byte *reserved1,
+ [in] DWORD grfMode,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ HRESULT CreateStorage(
+ [in] LPCOLESTR pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD dwStgFmt,
+ [in] DWORD reserved2,
+ [out] IStorage **ppstg);
+
+ HRESULT OpenStorage(
+ [in, unique] LPCOLESTR pwcsName,
+ [in, unique] IStorage *pstgPriority,
+ [in] DWORD grfMode,
+ [in, unique] SNB snbExclude,
+ [in] DWORD reserved,
+ [out] IStorage **ppstg);
+
+ HRESULT CopyTo(
+ [in] DWORD ciidExclude,
+ [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
+ [in, unique] SNB snbExclude,
+ [in, unique] IStorage *pstgDest);
+
+ HRESULT MoveElementTo(
+ [in] LPCOLESTR pwcsName,
+ [in, unique] IStorage *pstgDest,
+ [in] LPCOLESTR pwcsNewName,
+ [in] DWORD grfFlags);
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags);
+
+ HRESULT Revert();
+
+ [local]
+ HRESULT EnumElements(
+ [in] DWORD reserved1,
+ [in, unique, size_is(1)] void *reserved2,
+ [in] DWORD reserved3,
+ [out] IEnumSTATSTG **ppenum);
+
+ [call_as(EnumElements)]
+ HRESULT RemoteEnumElements(
+ [in] DWORD reserved1,
+ [in] unsigned long cbReserved2,
+ [in, unique, size_is(cbReserved2)] byte *reserved2,
+ [in] DWORD reserved3,
+ [out] IEnumSTATSTG **ppenum);
+
+ HRESULT DestroyElement(
+ [in] LPCOLESTR pwcsName);
+
+ HRESULT RenameElement(
+ [in] LPCOLESTR pwcsOldName,
+ [in] LPCOLESTR pwcsNewName);
+
+ HRESULT SetElementTimes(
+ [in, unique] LPCOLESTR pwcsName,
+ [in, unique] const FILETIME *pctime,
+ [in, unique] const FILETIME *patime,
+ [in, unique] const FILETIME *pmtime);
+
+ HRESULT SetClass(
+ [in] REFCLSID clsid);
+
+ HRESULT SetStateBits(
+ [in] DWORD grfStateBits,
+ [in] DWORD grfMask);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+}
+
+[
+ object,
+ uuid(0000010b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IPersistFile : IPersist
+{
+ typedef [unique] IPersistFile *LPPERSISTFILE;
+
+ HRESULT IsDirty();
+
+ HRESULT Load(
+ [in] LPCOLESTR pszFileName,
+ [in] DWORD dwMode);
+
+ HRESULT Save(
+ [in, unique] LPCOLESTR pszFileName,
+ [in] BOOL fRemember);
+
+ HRESULT SaveCompleted(
+ [in, unique] LPCOLESTR pszFileName);
+
+ HRESULT GetCurFile(
+ [out] LPOLESTR *ppszFileName);
+}
+
+[
+ object,
+ uuid(0000010a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IPersistStorage : IPersist
+{
+ typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
+
+ HRESULT IsDirty();
+
+ HRESULT InitNew(
+ [in, unique] IStorage *pStg);
+
+ HRESULT Load(
+ [in, unique] IStorage *pStg);
+
+ HRESULT Save(
+ [in, unique] IStorage *pStgSave,
+ [in] BOOL fSameAsLoad);
+
+ HRESULT SaveCompleted(
+ [in, unique] IStorage *pStgNew);
+
+ HRESULT HandsOffStorage();
+}
+
+[
+ object,
+ uuid(00000012-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IRootStorage : IUnknown
+{
+ typedef [unique] IRootStorage *LPROOTSTORAGE;
+
+ HRESULT SwitchToFile(
+ [in] LPOLESTR pszFile);
+}
+
+[
+ object,
+ uuid(0000000a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface ILockBytes : IUnknown
+{
+ typedef [unique] ILockBytes *LPLOCKBYTES;
+
+ [local]
+ HRESULT ReadAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [out, size_is(cb), length_is(*pcbRead)]
+ void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [call_as(ReadAt)]
+ HRESULT RemoteReadAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [out, size_is(cb), length_is(*pcbRead)]
+ byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [local]
+ HRESULT WriteAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] const void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(WriteAt)]
+ HRESULT RemoteWriteAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] const byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ HRESULT Flush();
+
+ HRESULT SetSize(
+ [in] ULARGE_INTEGER cb);
+
+ HRESULT LockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT UnlockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+}
+
+[
+ object,
+ uuid(99caf010-415e-11cf-8814-00aa00b569f5),
+ pointer_default(unique)
+]
+interface IFillLockBytes : IUnknown
+{
+ [local]
+ HRESULT FillAppend(
+ [in, size_is(cb)] const void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(FillAppend)]
+ HRESULT RemoteFillAppend(
+ [in, size_is(cb)] const byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [local]
+ HRESULT FillAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] const void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(FillAt)]
+ HRESULT RemoteFillAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] const byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ HRESULT SetFillSize(
+ [in] ULARGE_INTEGER ulSize);
+
+ HRESULT Terminate(
+ [in] BOOL bCanceled);
+}
+
+[
+ object,
+ uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
+ pointer_default(unique)
+]
+interface IProgressNotify : IUnknown
+{
+ HRESULT OnProgress(
+ [in] DWORD dwProgressCurrent,
+ [in] DWORD dwProgressMaximum,
+ [in] BOOL fAccurate,
+ [in] BOOL fOwner);
+}
+
+[
+ local,
+ object,
+ uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
+ pointer_default(unique)
+]
+interface ILayoutStorage : IUnknown
+{
+ typedef struct tagStorageLayout {
+ DWORD LayoutType;
+ OLECHAR *pwcsElementName;
+ LARGE_INTEGER cOffset;
+ LARGE_INTEGER cBytes;
+ } StorageLayout;
+
+ HRESULT LayoutScript(
+ [in] StorageLayout *pStorageLayout,
+ [in] DWORD nEntries,
+ [in] DWORD glfInterleavedFlag);
+
+ HRESULT BeginMonitor();
+
+ HRESULT EndMonitor();
+
+ HRESULT ReLayoutDocfile(
+ [in] OLECHAR *pwcsNewDfName);
+
+ HRESULT ReLayoutDocfileOnILockBytes(
+ [in] ILockBytes *pILockBytes);
+}
+
+[
+ object,
+ uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
+]
+interface IBlockingLock : IUnknown
+{
+ HRESULT Lock(
+ [in] DWORD dwTimeout);
+
+ HRESULT Unlock();
+}
+
+
+[
+ object,
+ uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
+]
+interface ITimeAndNoticeControl : IUnknown
+{
+ HRESULT SuppressChanges(
+ [in] DWORD res1,
+ [in] DWORD res2);
+
+}
+
+
+
+[
+ object,
+ uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
+]
+interface IOplockStorage: IUnknown
+{
+ HRESULT CreateStorageEx(
+ [in] LPCWSTR pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD stgfmt,
+ [in] DWORD grfAttrs,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppstgOpen);
+
+ HRESULT OpenStorageEx(
+ [in] LPCWSTR pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD stgfmt,
+ [in] DWORD grfAttrs,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppstgOpen);
+}
+
+/******************** Data Object ********************/
+
+[
+ object,
+ uuid(00000103-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IEnumFORMATETC : IUnknown
+{
+ typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
+
+ typedef struct tagDVTARGETDEVICE {
+ DWORD tdSize;
+ WORD tdDriverNameOffset;
+ WORD tdDeviceNameOffset;
+ WORD tdPortNameOffset;
+ WORD tdExtDevmodeOffset;
+ [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
+ BYTE tdData[];
+ } DVTARGETDEVICE;
+
+ typedef CLIPFORMAT *LPCLIPFORMAT;
+
+ typedef struct tagFORMATETC {
+ CLIPFORMAT cfFormat;
+ [unique] DVTARGETDEVICE *ptd;
+ DWORD dwAspect;
+ LONG lindex;
+ DWORD tymed;
+ } FORMATETC, *LPFORMATETC;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ FORMATETC *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ FORMATETC *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumFORMATETC **ppenum);
+}
+
+[
+ object,
+ uuid(00000105-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IEnumSTATDATA : IUnknown
+{
+ typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
+
+ 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;
+
+ typedef struct tagSTATDATA
+ {
+ FORMATETC formatetc;
+ DWORD advf;
+ [unique] IAdviseSink *pAdvSink;
+ DWORD dwConnection;
+ } STATDATA, *LPSTATDATA;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATDATA *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATDATA *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATDATA **ppenum);
+}
+
+[
+ object,
+ uuid(0000010f-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IAdviseSink : IUnknown
+{
+ typedef IAdviseSink *LPADVISESINK;
+
+ typedef [v1_enum] enum tagTYMED {
+ TYMED_HGLOBAL = 1,
+ TYMED_FILE = 2,
+ TYMED_ISTREAM = 4,
+ TYMED_ISTORAGE = 8,
+ TYMED_GDI = 16,
+ TYMED_MFPICT = 32,
+ TYMED_ENHMF = 64,
+ TYMED_NULL = 0
+ } TYMED;
+
+ typedef struct tagRemSTGMEDIUM {
+ DWORD tymed;
+ DWORD dwHandleType;
+ unsigned long pData;
+ unsigned long pUnkForRelease;
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+ } RemSTGMEDIUM;
+
+ typedef struct tagSTGMEDIUM {
+ DWORD tymed;
+ [switch_is(tymed)] union {
+ [case(TYMED_GDI)] HBITMAP hBitmap;
+ [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
+ [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
+ [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
+ [case(TYMED_FILE)] LPOLESTR lpszFileName;
+ [case(TYMED_ISTREAM)] IStream *pstm;
+ [case(TYMED_ISTORAGE)] IStorage *pstg;
+ [default] ;
+ } DUMMYUNIONNAME;
+ [unique] IUnknown *pUnkForRelease;
+ } uSTGMEDIUM;
+
+/* copied from wingdi.h */
+#define OBJ_PEN 1
+#define OBJ_BRUSH 2
+#define OBJ_DC 3
+#define OBJ_METADC 4
+#define OBJ_PAL 5
+#define OBJ_FONT 6
+#define OBJ_BITMAP 7
+#define OBJ_REGION 8
+#define OBJ_METAFILE 9
+#define OBJ_MEMDC 10
+#define OBJ_EXTPEN 11
+#define OBJ_ENHMETADC 12
+#define OBJ_ENHMETAFILE 13
+
+ typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
+ case OBJ_BITMAP: wireHBITMAP hBitmap;
+ case OBJ_PAL: wireHPALETTE hPalette;
+ default: wireHGLOBAL hGeneric;
+ } GDI_OBJECT;
+
+ typedef struct _userSTGMEDIUM {
+ union switch(DWORD tymed) u {
+ case TYMED_NULL: ;
+ case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
+ case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
+ case TYMED_GDI: GDI_OBJECT *hGdiHandle;
+ case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
+ case TYMED_FILE: LPOLESTR lpszFileName;
+ case TYMED_ISTREAM: BYTE_BLOB *pstm;
+ case TYMED_ISTORAGE: BYTE_BLOB *pstg;
+ } DUMMYUNIONNAME;
+ IUnknown *pUnkForRelease;
+ } userSTGMEDIUM;
+
+ typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
+ typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
+
+ typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
+ typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
+
+ typedef STGMEDIUM *LPSTGMEDIUM;
+
+ typedef struct _userFLAG_STGMEDIUM {
+ long ContextFlags;
+ long fPassOwnership;
+ userSTGMEDIUM Stgmed;
+ } userFLAG_STGMEDIUM;
+
+ typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
+
+ typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
+ long ContextFlags;
+ long fPassOwnership;
+ STGMEDIUM Stgmed;
+ } FLAG_STGMEDIUM;
+
+ [local]
+ void OnDataChange(
+ [in, unique] FORMATETC *pFormatetc,
+ [in, unique] STGMEDIUM *pStgmed);
+
+ [call_as(OnDataChange)]
+ HRESULT RemoteOnDataChange(
+ [in, unique] FORMATETC *pFormatetc,
+ [in, unique] ASYNC_STGMEDIUM *pStgmed);
+
+ [local]
+ void OnViewChange(
+ [in] DWORD dwAspect,
+ [in] LONG lindex);
+
+ [call_as(OnViewChange)]
+ HRESULT RemoteOnViewChange(
+ [in] DWORD dwAspect,
+ [in] LONG lindex);
+
+ [local]
+ void OnRename(
+ [in] IMoniker *pmk);
+
+ [call_as(OnRename)]
+ HRESULT RemoteOnRename(
+ [in] IMoniker *pmk);
+
+ [local]
+ void OnSave();
+
+ [call_as(OnSave)]
+ HRESULT RemoteOnSave();
+
+ [local]
+ void OnClose();
+
+ [call_as(OnClose)]
+ HRESULT RemoteOnClose();
+}
+
+[
+ object,
+ uuid(00000125-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IAdviseSink2 : IAdviseSink
+{
+ typedef [unique] IAdviseSink2 *LPADVISESINK2;
+
+ [local]
+ void OnLinkSrcChange(
+ [in, unique] IMoniker *pmk);
+
+ [call_as(OnLinkSrcChange)]
+ HRESULT RemoteOnLinkSrcChange(
+ [in, unique] IMoniker *pmk);
+}
+
+[
+ object,
+ uuid(0000010e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IDataObject : IUnknown
+{
+ typedef [unique] IDataObject *LPDATAOBJECT;
+
+ typedef enum tagDATADIR {
+ DATADIR_GET = 1,
+ DATADIR_SET = 2
+ } DATADIR;
+
+ [local]
+ HRESULT GetData(
+ [in, unique] FORMATETC *pformatetcIn,
+ [out] STGMEDIUM *pmedium);
+
+ [call_as(GetData)]
+ HRESULT RemoteGetData(
+ [in, unique] FORMATETC *pformatetcIn,
+ [out] STGMEDIUM *pRemoteMedium);
+
+ [local]
+ HRESULT GetDataHere(
+ [in, unique] FORMATETC *pformatetc,
+ [in, out] STGMEDIUM *pmedium);
+
+ [call_as(GetDataHere)]
+ HRESULT RemoteGetDataHere(
+ [in, unique] FORMATETC *pformatetc,
+ [in, out] STGMEDIUM *pRemoteMedium);
+
+ HRESULT QueryGetData(
+ [in, unique] FORMATETC *pformatetc);
+
+ HRESULT GetCanonicalFormatEtc(
+ [in, unique] FORMATETC *pformatectIn,
+ [out] FORMATETC *pformatetcOut);
+
+ [local]
+ HRESULT SetData(
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] STGMEDIUM *pmedium,
+ [in] BOOL fRelease);
+
+ [call_as(SetData)]
+ HRESULT RemoteSetData(
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] FLAG_STGMEDIUM *pmedium,
+ [in] BOOL fRelease);
+
+ HRESULT EnumFormatEtc(
+ [in] DWORD dwDirection,
+ [out] IEnumFORMATETC **ppenumFormatEtc);
+
+ HRESULT DAdvise(
+ [in] FORMATETC *pformatetc,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvSink,
+ [out] DWORD *pdwConnection);
+
+ HRESULT DUnadvise(
+ [in] DWORD dwConnection);
+
+ HRESULT EnumDAdvise(
+ [out] IEnumSTATDATA **ppenumAdvise);
+}
+
+[
+ local,
+ object,
+ uuid(00000110-0000-0000-C000-000000000046)
+]
+interface IDataAdviseHolder : IUnknown
+{
+ typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
+
+ HRESULT Advise(
+ [in, unique] IDataObject *pDataObject,
+ [in, unique] FORMATETC *pFetc,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvise,
+ [out] DWORD *pdwConnection);
+
+ HRESULT Unadvise(
+ [in] DWORD dwConnection);
+
+ HRESULT EnumAdvise(
+ [out] IEnumSTATDATA **ppenumAdvise);
+
+ HRESULT SendOnDataChange(
+ [in, unique] IDataObject *pDataObject,
+ [in] DWORD dwReserved,
+ [in] DWORD advf);
+}
+
+/******************** Remoting ********************/
+
+[
+ local,
+ object,
+ uuid(00000016-0000-0000-C000-000000000046)
+]
+interface IMessageFilter : IUnknown
+{
+ typedef [unique] IMessageFilter *LPMESSAGEFILTER;
+
+ typedef enum tagCALLTYPE {
+ CALLTYPE_TOPLEVEL = 1,
+ CALLTYPE_NESTED = 2,
+ CALLTYPE_ASYNC = 3,
+ CALLTYPE_TOPLEVEL_CALLPENDING = 4,
+ CALLTYPE_ASYNC_CALLPENDING = 5
+ } CALLTYPE;
+
+ typedef enum tagSERVERCALL {
+ SERVERCALL_ISHANDLED = 0,
+ SERVERCALL_REJECTED = 1,
+ SERVERCALL_RETRYLATER = 2
+ } SERVERCALL;
+
+ typedef enum tagPENDINGTYPE {
+ PENDINGTYPE_TOPLEVEL = 1,
+ PENDINGTYPE_NESTED = 2
+ } PENDINGTYPE;
+
+ typedef enum tagPENDINGMSG {
+ PENDINGMSG_CANCELCALL = 0,
+ PENDINGMSG_WAITNOPROCESS = 1,
+ PENDINGMSG_WAITDEFPROCESS = 2
+ } PENDINGMSG;
+
+ typedef struct tagINTERFACEINFO {
+ IUnknown *pUnk;
+ IID iid;
+ WORD wMethod;
+ } INTERFACEINFO, *LPINTERFACEINFO;
+
+ DWORD HandleInComingCall(
+ [in] DWORD dwCallType,
+ [in] HTASK htaskCaller,
+ [in] DWORD dwTickCount,
+ [in] LPINTERFACEINFO lpInterfaceInfo);
+
+ DWORD RetryRejectedCall(
+ [in] HTASK htaskCallee,
+ [in] DWORD dwTickCount,
+ [in] DWORD dwRejectType);
+
+ DWORD MessagePending(
+ [in] HTASK htaskCallee,
+ [in] DWORD dwTickCount,
+ [in] DWORD dwPendingType);
+}
+
+[
+ local,
+ object,
+ uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcChannelBuffer : IUnknown
+{
+ typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
+
+ typedef unsigned long RPCOLEDATAREP;
+
+ typedef struct tagRPCOLEMESSAGE {
+ void *reserved1;
+ RPCOLEDATAREP dataRepresentation;
+ void *Buffer;
+ ULONG cbBuffer;
+ ULONG iMethod;
+ void *reserved2[5];
+ ULONG rpcFlags;
+ } RPCOLEMESSAGE;
+
+ typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
+
+ HRESULT GetBuffer(
+ [in] RPCOLEMESSAGE *pMessage,
+ [in] REFIID riid);
+
+ HRESULT SendReceive(
+ [in,out] RPCOLEMESSAGE *pMessage,
+ [out] ULONG *pStatus);
+
+ HRESULT FreeBuffer(
+ [in] RPCOLEMESSAGE *pMessage);
+
+ HRESULT GetDestCtx(
+ [out] DWORD *pdwDestContext,
+ [out] void **ppvDestContext);
+
+ HRESULT IsConnected();
+}
+
+[
+ local,
+ object,
+ uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
+]
+interface IRpcChannelBuffer2 : IRpcChannelBuffer
+{
+ typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
+
+ HRESULT GetProtocolVersion(
+ [in,out] DWORD *pdwVersion);
+}
+
+[
+ local,
+ object,
+ uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
+]
+interface IRpcChannelBuffer3 : IRpcChannelBuffer2
+{
+ typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
+
+ HRESULT Send(
+ [in,out] RPCOLEMESSAGE *pMsg,
+ [out] ULONG *pulStatus);
+
+ HRESULT Receive(
+ [in,out] RPCOLEMESSAGE *pMsg,
+ [in] ULONG ulSize,
+ [out] ULONG *pulStatus);
+
+ HRESULT Cancel(
+ [in] RPCOLEMESSAGE *pMsg);
+
+ HRESULT GetCallContext(
+ [in] RPCOLEMESSAGE *pMsg,
+ [in] REFIID riid,
+ [out] void **pInterface);
+
+ HRESULT GetDestCtxEx(
+ [in] RPCOLEMESSAGE *pMsg,
+ [out] DWORD *pdwDestContext,
+ [out] void **ppvDestContext);
+
+ HRESULT GetState(
+ [in] RPCOLEMESSAGE *pMsg,
+ [out] DWORD *pState);
+
+ HRESULT RegisterAsync(
+ [in] RPCOLEMESSAGE *pMsg,
+ [in] IAsyncManager *pAsyncMgr);
+}
+
+[
+ local,
+ object,
+ uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
+ pointer_default(unique)
+]
+interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
+{
+ HRESULT Send(
+ [in, out] RPCOLEMESSAGE *pMsg,
+ [in] ISynchronize *pSync,
+ [out] ULONG *pulStatus);
+
+ HRESULT Receive(
+ [in, out] RPCOLEMESSAGE *pMsg,
+ [out] ULONG *pulStatus);
+
+ HRESULT GetDestCtxEx(
+ [in] RPCOLEMESSAGE *pMsg,
+ [out] DWORD *pdwDestContext,
+ [out] void **ppvDestContext);
+}
+
+[
+ local,
+ object,
+ uuid(58a08519-24c8-4935-b482-3fd823333a4f)
+]
+interface IRpcSyntaxNegotiate : IUnknown
+{
+ HRESULT NegotiateSyntax(
+ [in, out] RPCOLEMESSAGE *pMsg);
+}
+
+[
+ local,
+ object,
+ uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcProxyBuffer : IUnknown
+{
+ typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
+
+ HRESULT Connect(
+ [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
+
+ void Disconnect();
+}
+
+[
+ local,
+ object,
+ uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcStubBuffer : IUnknown
+{
+ typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
+
+ HRESULT Connect(
+ [in] IUnknown *pUnkServer);
+
+ void Disconnect();
+
+ HRESULT Invoke(
+ [in] RPCOLEMESSAGE *_prpcmsg,
+ [in] IRpcChannelBuffer *_pRpcChannelBuffer);
+
+ IRpcStubBuffer *IsIIDSupported(
+ [in] REFIID riid);
+
+ ULONG CountRefs();
+
+ HRESULT DebugServerQueryInterface(
+ void **ppv);
+
+ void DebugServerRelease(
+ void *pv);
+}
+
+[
+ local,
+ object,
+ uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
+]
+interface IPSFactoryBuffer : IUnknown
+{
+ typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
+
+ HRESULT CreateProxy(
+ [in] IUnknown *pUnkOuter,
+ [in] REFIID riid,
+ [out] IRpcProxyBuffer **ppProxy,
+ [out] void **ppv);
+
+ HRESULT CreateStub(
+ [in] REFIID riid,
+ [in, unique] IUnknown *pUnkServer,
+ [out] IRpcStubBuffer **ppStub);
+}
+
+[
+ local,
+ object,
+ uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
+]
+interface IChannelHook : IUnknown
+{
+ typedef [unique] IChannelHook *LPCHANNELHOOK;
+
+ typedef struct SChannelHookCallInfo {
+ IID iid;
+ DWORD cbSize;
+ GUID uCausality;
+ DWORD dwServerPid;
+ DWORD iMethod;
+ void *pObject;
+ } SChannelHookCallInfo;
+
+ void ClientGetSize(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [out] ULONG *pDataSize);
+
+ void ClientFillBuffer(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in, out] ULONG *pDataSize,
+ [in] void *pDataBuffer);
+
+ void ClientNotify(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] ULONG cbDataSize,
+ [in] void *pDataBuffer,
+ [in] DWORD lDataRep,
+ [in] HRESULT hrFault);
+
+ void ServerNotify(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] ULONG cbDataSize,
+ [in] void *pDataBuffer,
+ [in] DWORD lDataRep);
+
+ void ServerGetSize(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] HRESULT hrFault,
+ [out] ULONG *pDataSize);
+
+ void ServerFillBuffer(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in, out] ULONG *pDataSize,
+ [in] void *pDataBuffer,
+ [in] HRESULT hrFault );
+}
+
+extern const FMTID FMTID_SummaryInformation;
+extern const FMTID FMTID_DocSummaryInformation;
+extern const FMTID FMTID_UserDefinedProperties;
+
+
+/******************** Connection Points ********************/
+/* FIXME */
+
+/******************** DCOM ********************/
+
+[
+ local,
+ object,
+ uuid(0000013D-0000-0000-C000-000000000046)
+]
+interface IClientSecurity : IUnknown
+{
+ typedef struct tagSOLE_AUTHENTICATION_SERVICE {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ OLECHAR *pPrincipalName;
+ HRESULT hr;
+ } SOLE_AUTHENTICATION_SERVICE;
+
+ typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
+
+ typedef struct tagSOLE_AUTHENTICATION_INFO {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ void *pAuthInfo;
+ } SOLE_AUTHENTICATION_INFO;
+
+ const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1;
+ const void *COLE_DEFAULT_AUTHINFO = (void*) -1;
+
+ typedef struct tagSOLE_AUTHENTICATION_LIST {
+ DWORD cAuthInfo;
+ SOLE_AUTHENTICATION_INFO *aAuthInfo;
+ } SOLE_AUTHENTICATION_LIST;
+
+ typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
+ EOAC_NONE = 0x0,
+ EOAC_MUTUAL_AUTH = 0x1,
+ EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */
+ EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */
+ EOAC_APPID = 0x8, /* CoInitializeSecurity only */
+ EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */
+ EOAC_STATIC_CLOAKING = 0x20,
+ EOAC_DYNAMIC_CLOAKING = 0x40,
+ EOAC_ANY_AUTHORITY = 0x80,
+ EOAC_MAKE_FULLSIC = 0x100,
+ EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */
+ EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */
+ EOAC_DEFAULT = 0x800,
+ EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */
+ EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */
+ } EOLE_AUTHENTICATION_CAPABILITIES;
+
+ HRESULT QueryBlanket(
+ [in] IUnknown *pProxy,
+ [out] DWORD *pAuthnSvc,
+ [out] DWORD *pAuthzSvc,
+ [out] OLECHAR **pServerPrincName,
+ [out] DWORD *pAuthnLevel,
+ [out] DWORD *pImpLevel,
+ [out] void **pAuthInfo,
+ [out] DWORD *pCapabilities);
+
+ HRESULT SetBlanket(
+ [in] IUnknown *pProxy,
+ [in] DWORD AuthnSvc,
+ [in] DWORD AuthzSvc,
+ [in] OLECHAR *pServerPrincName,
+ [in] DWORD AuthnLevel,
+ [in] DWORD ImpLevel,
+ [in] void *pAuthInfo,
+ [in] DWORD Capabilities);
+
+ HRESULT CopyProxy(
+ [in] IUnknown *pProxy,
+ [out] IUnknown **ppCopy);
+}
+
+[
+ local,
+ object,
+ uuid(0000013E-0000-0000-C000-000000000046)
+]
+interface IServerSecurity : IUnknown
+{
+ HRESULT QueryBlanket(
+ [out] DWORD *pAuthnSvc,
+ [out] DWORD *pAuthzSvc,
+ [out] OLECHAR **pServerPrincName,
+ [out] DWORD *pAuthnLevel,
+ [out] DWORD *pImpLevel,
+ [out] void **pPrivs,
+ [out] DWORD *pCapabilities);
+
+ HRESULT ImpersonateClient();
+
+ HRESULT RevertToSelf();
+
+ BOOL IsImpersonating();
+}
+
+[
+ local,
+ object,
+ uuid(00000024-0000-0000-C000-000000000046)
+]
+interface IAsyncSetup : IUnknown
+{
+ HRESULT GetAsyncManager(
+ [in] REFIID riid,
+ [in] IUnknown *pOuter,
+ [in] DWORD dwFlags,
+ [out] IUnknown **ppInner,
+ [out] IAsyncManager **ppAsyncMgr);
+}
+
+[
+ object,
+ uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
+]
+interface IDirectWriterLock : IUnknown
+{
+ HRESULT WaitForWriteAccess(
+ [in] DWORD dwTimeout);
+
+ HRESULT ReleaseWriteAccess();
+
+ HRESULT HaveWriteAccess();
+}
+
+[
+ object,
+ uuid(00000030-0000-0000-C000-000000000046)
+]
+
+interface ISynchronize : IUnknown
+{
+ HRESULT Wait(
+ [in] DWORD dwFlags,
+ [in] DWORD dwMilliseconds);
+
+ HRESULT Signal();
+
+ HRESULT Reset();
+}
+
+
+[
+ local,
+ object,
+ uuid(00000031-0000-0000-C000-000000000046)
+]
+interface ISynchronizeHandle : IUnknown
+{
+ HRESULT GetHandle(
+ [out] HANDLE *ph);
+}
+
+
+[
+ local,
+ object,
+ uuid(00000032-0000-0000-C000-000000000046)
+]
+interface ISynchronizeEvent : ISynchronizeHandle
+{
+ HRESULT SetEventHandle(
+ [in] HANDLE *ph);
+}
+
+
+[
+ local,
+ object,
+ uuid(00000033-0000-0000-C000-000000000046)
+]
+interface ISynchronizeContainer : IUnknown
+{
+ HRESULT AddSynchronize(
+ [in] ISynchronize *pSync);
+
+ HRESULT WaitMultiple(
+ [in] DWORD dwFlags,
+ [in] DWORD dwTimeOut,
+ [out] ISynchronize **ppSync);
+}
+
+[
+ local,
+ object,
+ uuid(00000025-0000-0000-C000-000000000046)
+]
+interface ISynchronizeMutex : ISynchronize
+{
+ HRESULT ReleaseMutex();
+}
+
+[
+ local,
+ object,
+ uuid(00000029-0000-0000-C000-000000000046)
+]
+
+interface ICancelMethodCalls : IUnknown
+{
+ typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
+
+ HRESULT Cancel(
+ [in] ULONG ulSeconds);
+
+ HRESULT TestCancel();
+}
+
+[
+ local,
+ object,
+ uuid(0000002A-0000-0000-C000-000000000046)
+]
+interface IAsyncManager : IUnknown
+{
+ typedef enum tagDCOM_CALL_STATE {
+ DCOM_NONE = 0,
+ DCOM_CALL_COMPLETE = 1,
+ DCOM_CALL_CANCELED = 2
+ } DCOM_CALL_STATE;
+
+ HRESULT CompleteCall(
+ [in] HRESULT Result);
+
+ HRESULT GetCallContext(
+ [in] REFIID riid,
+ [out] void **pInterface);
+
+ HRESULT GetState(
+ [out] ULONG *pulStateFlags);
+}
+
+[
+ local,
+ object,
+ uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
+ pointer_default(unique)
+]
+interface ICallFactory : IUnknown
+{
+ HRESULT CreateCall(
+ [in] REFIID riid,
+ [in] IUnknown *pCtrlUnk,
+ [in] REFIID riid2,
+ [out, iid_is(riid2)] IUnknown **ppv);
+}
+
+[
+ local,
+ object,
+ uuid(00000144-0000-0000-C000-000000000046)
+]
+interface IRpcOptions : IUnknown
+{
+ HRESULT Set(
+ [in] IUnknown *pPrx,
+ [in] DWORD dwProperty,
+ [in] ULONG_PTR dwValue);
+
+ HRESULT Query(
+ [in] IUnknown *pPrx,
+ [in] DWORD dwProperty,
+ [out] ULONG_PTR *pdwValue);
+}
+
+enum {
+ COMBND_RPCTIMEOUT = 1,
+ COMBND_SERVER_LOCALITY = 2
+};
+
+enum {
+ SERVER_LOCALITY_PROCESS_LOCAL = 0,
+ SERVER_LOCALITY_MACHINE_LOCAL = 1,
+ SERVER_LOCALITY_REMOTE = 2
+};
+
+[
+ local,
+ object,
+ uuid(00000149-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IRpcHelper : IUnknown
+{
+ HRESULT GetDCOMProtocolVersion(
+ [out] DWORD *pComVersion);
+
+ HRESULT GetIIDFromOBJREF(
+ [in] void *pObjRef,
+ [out] IID **piid);
+}
+
+[
+ local,
+ object,
+ uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
+]
+interface IReleaseMarshalBuffers : IUnknown
+{
+ HRESULT ReleaseMarshalBuffer(
+ [in] RPCOLEMESSAGE *pMsg,
+ [in] DWORD dwFlags,
+ [in, unique] IUnknown *pChnl);
+}
+
+[
+ local,
+ object,
+ uuid(0000002B-0000-0000-C000-000000000046)
+]
+interface IWaitMultiple : IUnknown
+{
+ HRESULT WaitMultiple(
+ [in] DWORD timeout,
+ [out] ISynchronize **pSync);
+ HRESULT AddSynchronize(
+ [in] ISynchronize *pSync);
+}
+
+
+[
+ object,
+ uuid(00000026-0000-0000-C000-000000000046)
+]
+interface IUrlMon : IUnknown
+{
+ HRESULT AsyncGetClassBits(
+ [in] REFCLSID rclsid,
+ [in, unique] LPCWSTR pszTYPE,
+ [in, unique] LPCWSTR pszExt,
+ [in] DWORD dwFileVersionMS,
+ [in] DWORD dwFileVersionLS,
+ [in, unique] LPCWSTR pszCodeBase,
+ [in] IBindCtx *pbc,
+ [in] DWORD dwClassContext,
+ [in] REFIID riid,
+ [in] DWORD flags);
+}
+
+[
+ local,
+ object,
+ uuid(00000145-0000-0000-C000-000000000046)
+]
+interface IForegroundTransfer : IUnknown
+{
+ HRESULT AllowForegroundTransfer(
+ [in] void *lpvReserved);
+}
+
+[
+ local,
+ object,
+ uuid(00000147-0000-0000-C000-000000000046)
+]
+interface IAddrTrackingControl : IUnknown
+{
+ typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
+
+ HRESULT EnableCOMDynamicAddrTracking();
+ HRESULT DisableCOMDynamicAddrTracking();
+}
+
+[
+ local,
+ object,
+ uuid(00000148-0000-0000-C000-000000000046)
+]
+interface IAddrExclusionControl : IUnknown
+{
+ typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
+
+ HRESULT GetCurrentAddrExclusionList(
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppEnumerator);
+ HRESULT UpdateAddrExclusionList(
+ [in] IUnknown *pEnumerator);
+}
+
+typedef enum _APTTYPE {
+ APTTYPE_CURRENT = -1,
+ APTTYPE_STA = 0,
+ APTTYPE_MTA = 1,
+ APTTYPE_NA = 2,
+ APTTYPE_MAINSTA = 3
+} APTTYPE;
+
+typedef enum _THDTYPE {
+ THDTYPE_BLOCKMESSAGES = 0,
+ THDTYPE_PROCESSMESSAGES = 1
+} THDTYPE;
+
+[
+ local,
+ object,
+ uuid(000001ce-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IComThreadingInfo : IUnknown
+{
+ HRESULT GetCurrentApartmentType(
+ [out] APTTYPE *pAptType);
+ HRESULT GetCurrentThreadType(
+ [out] THDTYPE *pThreadType);
+ HRESULT GetCurrentLogicalThreadId(
+ [out] GUID *pguidLogicalThreadId);
+ HRESULT SetCurrentLogicalThreadId(
+ [in] REFGUID rguid);
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
+]
+interface IProcessInitControl : IUnknown
+{
+ HRESULT ResetInitializerTimeout(
+ [in] DWORD dwSecondsRemaining);
+}
+
+[
+ local,
+ object,
+ uuid(00000034-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+interface IInitializeSpy : IUnknown
+{
+ typedef [unique] IInitializeSpy *LPINITIALIZESPY;
+
+ HRESULT PreInitialize(
+ [in] DWORD dwCoInit,
+ [in] DWORD dwCurThreadAptRefs);
+
+ HRESULT PostInitialize(
+ [in] HRESULT hrCoInit,
+ [in] DWORD dwCoInit,
+ [in] DWORD dwNewThreadAptRefs);
+
+ HRESULT PreUninitialize(
+ [in] DWORD dwCurThreadAptRefs);
+
+ HRESULT PostUninitialize(
+ [in] DWORD dwNewThreadAptRefs);
+}
+
+[
+ object,
+ uuid(969dc708-5c76-11d1-8d86-0000f804b057)
+]
+interface IThumbnailExtractor : IUnknown
+{
+ HRESULT ExtractThumbnail(
+ [in] IStorage *pStg,
+ [in] ULONG ulLength,
+ [in] ULONG ulHeight,
+ [out] ULONG *pulOutputLength,
+ [out] ULONG *pulOutputHeight,
+ [out] HBITMAP *phOutputBitmap);
+
+
+ HRESULT OnFileUpdated(
+ [in] IStorage *pStg);
+}
+
+typedef enum tagGLOBALOPT_PROPERTIES
+{
+ COMGLB_EXCEPTION_HANDLING = 1,
+ COMGLB_APPID = 2,
+ COMGLB_RPC_THREADPOOL_SETTING = 3
+} GLOBALOPT_PROPERTIES;
+
+typedef enum tagGLOBALOPT_EH_VALUES
+{
+ COMGLB_EXCEPTION_HANDLE = 0,
+ COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1,
+ COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
+ COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2
+} GLOBALOPT_EH_VALUES;
+
+typedef enum tagGLOBALOPT_RPCTP_VALUES
+{
+ COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
+ COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
+} GLOBALOPT_RPCTP_VALUES;
+
+
+[
+ object,
+ local,
+ pointer_default(unique),
+ uuid(0000015B-0000-0000-C000-000000000046)
+]
+interface IGlobalOptions : IUnknown
+{
+ HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value);
+ HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value);
+}
+
+cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
+
+typedef DWORD CPFLAGS;
+
+typedef struct tagContextProperty
+{
+ GUID policyId;
+ CPFLAGS flags;
+ [unique] IUnknown *pUnk;
+} ContextProperty;
+
+[
+ local,
+ object,
+ uuid(000001c1-0000-0000-C000-000000000046)
+]
+interface IEnumContextProps : IUnknown
+{
+ typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
+
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumContextProps **ppEnumContextProps);
+
+ HRESULT Count(
+ [out] ULONG *pcelt);
+}
+
+[
+ local,
+ object,
+ uuid(000001c0-0000-0000-C000-000000000046)
+]
+interface IContext : IUnknown
+{
+ HRESULT SetProperty(
+ [in] REFGUID policyId,
+ [in] CPFLAGS flags,
+ [in] IUnknown *pUnk);
+
+ HRESULT RemoveProperty(
+ [in] REFGUID policyId);
+
+ HRESULT GetProperty(
+ [in] REFGUID guid,
+ [out] CPFLAGS *pFlags,
+ [out] IUnknown **ppUnk);
+
+ HRESULT EnumContextProps(
+ [out] IEnumContextProps **ppEnumContextProps);
+}
+
+[
+ local,
+ object,
+ uuid(000001c6-0000-0000-c000-000000000046),
+ pointer_default(unique)
+]
+interface IObjContext : IContext
+{
+ void Reserved1();
+ void Reserved2();
+ void Reserved3();
+ void Reserved4();
+ void Reserved5();
+ void Reserved6();
+ void Reserved7();
+}
+
+cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")