windows-nt/Source/XPSP1/NT/com/published/idlole/public/objidl.idl
2020-09-26 16:20:57 +08:00

3160 lines
69 KiB
Plaintext

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: objidl.idl
//
//--------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
#if (__midl >= 501)
midl_pragma warning( disable: 2007 ) // file already imported
midl_pragma warning( disable: 2209 ) // ignored redundantly specified attributes
midl_pragma warning( disable: 2298 ) // version ignored for object interfaces
#endif
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(push)")
cpp_quote("#endif")
cpp_quote("#pragma warning(disable:4201)")
cpp_quote("#endif")
cpp_quote("#if ( _MSC_VER >= 1020 )")
cpp_quote("#pragma once")
cpp_quote("#endif")
#ifndef DO_NO_IMPORTS
import "unknwn.idl";
import "wtypes.idl";
#endif
interface IStream;
interface IMoniker;
interface IEnumMoniker;
interface IEnumString;
interface IRunningObjectTable;
interface IStorage;
interface IEnumSTATSTG;
interface IAdviseSink;
interface IBindCtx;
interface IEnumMoniker;
interface IAsyncManager;
interface ICallFactory;
interface ISynchronize;
typedef struct _COSERVERINFO
{
DWORD dwReserved1;
LPWSTR pwszName;
COAUTHINFO * pAuthInfo;
DWORD dwReserved2;
} COSERVERINFO;
/****************************************************************************
* Component Object Interfaces
****************************************************************************/
[
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(00000002-0000-0000-C000-000000000046)
]
interface IMalloc : IUnknown
{
typedef [unique] IMalloc *LPMALLOC;
void *Alloc([in] SIZE_T cb);
void *Realloc ([in] void *pv,
[in] SIZE_T cb);
void Free([in] void *pv);
SIZE_T GetSize([in] void *pv);
int DidAlloc(void *pv);
void HeapMinimize(void);
}
[
local,
object,
uuid(0000001d-0000-0000-C000-000000000046)
]
interface IMallocSpy : IUnknown
{
typedef [unique] IMallocSpy *LPMALLOCSPY;
SIZE_T PreAlloc
(
[in] SIZE_T cbRequest
);
void *PostAlloc
(
[in] void *pActual
);
void *PreFree
(
[in] void *pRequest,
[in] BOOL fSpyed
);
void PostFree
(
[in] BOOL fSpyed
);
SIZE_T PreRealloc
(
[in] void *pRequest,
[in] SIZE_T cbRequest,
[out] void **ppNewRequest,
[in] BOOL fSpyed
);
void *PostRealloc
(
[in] void *pActual,
[in] BOOL fSpyed
);
void *PreGetSize
(
[in] void *pRequest,
[in] BOOL fSpyed
);
SIZE_T PostGetSize
(
[in] SIZE_T cbActual,
[in] BOOL fSpyed
);
void *PreDidAlloc
(
[in] void *pRequest,
[in] BOOL fSpyed
);
int PostDidAlloc
(
[in] void *pRequest,
[in] BOOL fSpyed,
[in] int fActual
);
void PreHeapMinimize(void);
void PostHeapMinimize(void);
}
[
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
);
}
[
object,
local,
uuid(00000019-0000-0000-C000-000000000046)
]
interface IExternalConnection : IUnknown
{
typedef [unique] IExternalConnection* LPEXTERNALCONNECTION;
// bit flags for IExternalConnection
typedef enum tagEXTCONN
{
EXTCONN_STRONG = 0x0001, // strong connection
EXTCONN_WEAK = 0x0002, // weak connection (table, container)
EXTCONN_CALLABLE = 0x0004, // table .vs. callable
} EXTCONN;
// *** IExternalConnection methods ***
DWORD AddConnection
(
[in] DWORD extconn,
[in] DWORD reserved
);
DWORD ReleaseConnection
(
[in] DWORD extconn,
[in] DWORD reserved,
[in] BOOL fLastReleaseCloses
);
}
typedef [unique] IMultiQI* LPMULTIQI;
typedef struct tagMULTI_QI
{
const IID *pIID; // pass this one in
IUnknown *pItf; // get these out (you must set to NULL before calling)
HRESULT hr;
} MULTI_QI;
[
object,
local,
uuid(00000020-0000-0000-C000-000000000046),
#if (__midl >= 500)
async_uuid(000e0020-0000-0000-C000-000000000046)
#endif
]
interface IMultiQI : IUnknown
{
HRESULT QueryMultipleInterfaces
(
[in] ULONG cMQIs,
[in,out] MULTI_QI *pMQIs
);
}
[
object,
local,
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);
}
/****************************************************************************
* Binding Interfaces
****************************************************************************/
[
object,
uuid(0000000e-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface IBindCtx : IUnknown
{
typedef [unique] IBindCtx *LPBC;
typedef [unique] IBindCtx *LPBINDCTX;
typedef struct tagBIND_OPTS {
DWORD cbStruct; // sizeof(BIND_OPTS)
DWORD grfFlags;
DWORD grfMode;
DWORD dwTickCountDeadline;
} BIND_OPTS, * LPBIND_OPTS;
cpp_quote("#if defined(__cplusplus)")
cpp_quote(" typedef struct tagBIND_OPTS2 : tagBIND_OPTS{")
cpp_quote(" DWORD dwTrackFlags;")
cpp_quote(" DWORD dwClassContext;")
cpp_quote(" LCID locale;")
cpp_quote(" COSERVERINFO * pServerInfo;")
cpp_quote(" } BIND_OPTS2, * LPBIND_OPTS2;")
cpp_quote("#else")
typedef struct tagBIND_OPTS2 {
DWORD cbStruct; // sizeof(BIND_OPTS2)
DWORD grfFlags;
DWORD grfMode;
DWORD dwTickCountDeadline;
DWORD dwTrackFlags;
DWORD dwClassContext;
LCID locale;
COSERVERINFO * pServerInfo;
} BIND_OPTS2, * LPBIND_OPTS2;
cpp_quote("#endif")
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
(
void
);
[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);
}
[
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
(
void
);
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;
// 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_URLMONIKER = 6,
MKSYS_CLASSMONIKER = 7,
MKSYS_OBJREFMONIKER = 8,
MKSYS_SESSIONMONIKER = 9
}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);
}
/****************************************************************************
* Structured Storage Interfaces
****************************************************************************/
[
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)] void const *pv,
[in] ULONG cb,
[out] ULONG *pcbWritten);
[call_as(Write)]
HRESULT RemoteWrite(
[in, size_is(cb)] byte const *pv,
[in] ULONG cb,
[out] ULONG *pcbWritten);
}
[
object,
uuid(0000000c-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface IStream : ISequentialStream
{
typedef [unique] IStream *LPSTREAM;
/* Storage stat buffer */
cpp_quote("//FSSpec is Macintosh only, defined in macos\files.h")
cpp_quote("#ifdef _MAC")
cpp_quote(" typedef struct tagSTATSTG")
cpp_quote(" { ")
cpp_quote(" LPOLESTR pwcsName;")
cpp_quote(" FSSpec *pspec;")
cpp_quote(" DWORD type;")
cpp_quote(" ULARGE_INTEGER cbSize;")
cpp_quote(" FILETIME mtime;")
cpp_quote(" FILETIME ctime;")
cpp_quote(" FILETIME atime;")
cpp_quote(" DWORD grfMode;")
cpp_quote(" DWORD grfLocksSupported;")
cpp_quote(" CLSID clsid;")
cpp_quote(" DWORD grfStateBits;")
cpp_quote(" DWORD reserved;")
cpp_quote(" } STATSTG;")
cpp_quote("#else //_MAC")
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;
cpp_quote("#endif //_MAC")
/* 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;
[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, string] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStream **ppstm);
[local]
HRESULT OpenStream(
[in, string] const OLECHAR *pwcsName,
[in, unique] void *reserved1,
[in] DWORD grfMode,
[in] DWORD reserved2,
[out] IStream **ppstm);
[call_as(OpenStream)]
HRESULT RemoteOpenStream(
[in, string] const OLECHAR *pwcsName,
[in] unsigned long cbReserved1,
[in, unique, size_is(cbReserved1)] byte *reserved1,
[in] DWORD grfMode,
[in] DWORD reserved2,
[out] IStream **ppstm);
HRESULT CreateStorage(
[in, string] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStorage **ppstg);
HRESULT OpenStorage(
[in, unique, string] const OLECHAR *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)] IID const *rgiidExclude,
[in, unique] SNB snbExclude,
[in, unique] IStorage *pstgDest);
HRESULT MoveElementTo(
[in, string] const OLECHAR * pwcsName,
[in, unique] IStorage *pstgDest,
[in, string] const OLECHAR *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, string] const OLECHAR *pwcsName);
HRESULT RenameElement(
[in, string] const OLECHAR *pwcsOldName,
[in, string] const OLECHAR *pwcsNewName);
HRESULT SetElementTimes(
[in, unique, string] const OLECHAR *pwcsName,
[in, unique] FILETIME const *pctime,
[in, unique] FILETIME const *patime,
[in, unique] FILETIME const *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
(
void
);
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
(
void
);
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
(
void
);
}
[
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 _stdcall 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)] void const *pv,
[in] ULONG cb,
[out] ULONG *pcbWritten);
[call_as(WriteAt)]
HRESULT RemoteWriteAt(
[in] ULARGE_INTEGER ulOffset,
[in, size_is(cb)] byte const *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(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;
//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 tagSTATDATA
{ // field used by:
FORMATETC formatetc; // EnumAdvise, EnumData (cache), EnumFormats
DWORD advf; // EnumAdvise, EnumData (cache)
[unique] IAdviseSink * pAdvSink; // EnumAdvise
DWORD dwConnection; // EnumAdvise
} STATDATA;
typedef 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(00000012-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface IRootStorage : IUnknown
{
typedef [unique] IRootStorage *LPROOTSTORAGE;
HRESULT SwitchToFile
(
[in] LPOLESTR pszFile
);
}
/****************************************************************************
* Notification Interfaces
****************************************************************************/
[
object,
uuid(0000010f-0000-0000-C000-000000000046),
#if (__midl >= 500)
async_uuid(00000150-0000-0000-C000-000000000046),
#endif
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;
cpp_quote("#ifndef RC_INVOKED")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(push)")
cpp_quote("#endif")
cpp_quote("#pragma warning(disable:4200)")
cpp_quote("#endif")
typedef struct tagRemSTGMEDIUM {
DWORD tymed;
DWORD dwHandleType;
unsigned long pData;
unsigned long pUnkForRelease;
unsigned long cbData;
[size_is(cbData)] byte data[];
} RemSTGMEDIUM;
cpp_quote("#ifndef RC_INVOKED")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(pop)")
cpp_quote("#else")
cpp_quote("#pragma warning(default:4200)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("#ifdef NONAMELESSUNION")
cpp_quote("typedef struct tagSTGMEDIUM {")
cpp_quote(" DWORD tymed;")
cpp_quote(" union {")
cpp_quote(" HBITMAP hBitmap;")
cpp_quote(" HMETAFILEPICT hMetaFilePict;")
cpp_quote(" HENHMETAFILE hEnhMetaFile;")
cpp_quote(" HGLOBAL hGlobal;")
cpp_quote(" LPOLESTR lpszFileName;")
cpp_quote(" IStream *pstm;")
cpp_quote(" IStorage *pstg;")
cpp_quote(" } u;")
cpp_quote(" IUnknown *pUnkForRelease;")
cpp_quote("}uSTGMEDIUM;")
cpp_quote("#else")
typedef struct tagSTGMEDIUM {
DWORD tymed;
[switch_type(DWORD), switch_is((DWORD) 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]
;
};
[unique] IUnknown *pUnkForRelease;
}uSTGMEDIUM;
cpp_quote("#endif /* !NONAMELESSUNION */")
//
// wireSTGMEDIUM
//
// These flags are #defined (not enumerated) in wingdi.
// We need to repeat #defines to avoid conflict in the generated file.
//
/* Object Definitions for EnumObjects() */
#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 _STGMEDIUM_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;
};
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);
[local]
void OnViewChange(
[in] DWORD dwAspect,
[in] LONG lindex);
[local]
void OnRename(
[in] IMoniker *pmk);
[local]
void OnSave();
[local]
void OnClose();
#if (__midl >= 500)
// Currently used temporary definitons.
[call_as(OnDataChange)]
HRESULT RemoteOnDataChange(
[in, unique] FORMATETC *pFormatetc,
[in, unique] ASYNC_STGMEDIUM *pStgmed);
[call_as(OnViewChange)]
HRESULT RemoteOnViewChange(
[in] DWORD dwAspect,
[in] LONG lindex);
[call_as(OnRename)]
HRESULT RemoteOnRename(
[in] IMoniker *pmk);
[call_as(OnSave)]
HRESULT RemoteOnSave(
);
#elif (__midl > 302)
// Currently used temporary definitons.
[call_as(OnDataChange), async]
HRESULT RemoteOnDataChange(
[in] IAsyncManager **ppIAM,
[in, unique] FORMATETC *pFormatetc,
[in, unique] ASYNC_STGMEDIUM *pStgmed);
[call_as(OnViewChange), async]
HRESULT RemoteOnViewChange(
[in] IAsyncManager **ppIAM,
[in] DWORD dwAspect,
[in] LONG lindex);
[call_as(OnRename), async]
HRESULT RemoteOnRename(
[in] IAsyncManager **ppIAM,
[in] IMoniker *pmk);
[call_as(OnSave), async]
HRESULT RemoteOnSave(
[in] IAsyncManager **ppIAM
);
#else
// Old definitions kept for convenience.
[call_as(OnDataChange), async]
void RemoteOnDataChange(
[in, unique] FORMATETC *pFormatetc,
[in, unique] ASYNC_STGMEDIUM *pStgmed);
[call_as(OnViewChange), async]
void RemoteOnViewChange(
[in] DWORD dwAspect,
[in] LONG lindex);
[call_as(OnRename), async]
void RemoteOnRename(
[in] IMoniker *pmk);
[call_as(OnSave), async]
void RemoteOnSave();
#endif // MIDL > 302
[call_as(OnClose)]
HRESULT RemoteOnClose();
}
[
object,
uuid(00000125-0000-0000-C000-000000000046),
#if (__midl >= 500)
async_uuid(00000151-0000-0000-C000-000000000046),
#endif
pointer_default(unique)
]
interface IAdviseSink2 : IAdviseSink
{
typedef [unique] IAdviseSink2 *LPADVISESINK2;
[local]
void OnLinkSrcChange(
[in, unique] IMoniker *pmk);
#if (__midl >= 500)
// Currently used temporary definiton
[call_as(OnLinkSrcChange)]
HRESULT RemoteOnLinkSrcChange(
[in, unique] IMoniker *pmk);
#elif (__midl > 302)
// Currently used temporary definiton
[call_as(OnLinkSrcChange), async]
HRESULT RemoteOnLinkSrcChange(
[in] IAsyncManager **ppIAM,
[in, unique] IMoniker *pmk);
#else
// Old one for convenience.
[call_as(OnLinkSrcChange), async]
void RemoteOnLinkSrcChange(
[in, unique] IMoniker *pmk);
#endif
}
[
object,
uuid(0000010e-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface IDataObject : IUnknown
{
typedef [unique] IDataObject *LPDATAOBJECT;
//DATA format DIRection
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
);
}
[
local,
object,
uuid(00000016-0000-0000-C000-000000000046)
]
interface IMessageFilter : IUnknown
{
typedef [unique] IMessageFilter *LPMESSAGEFILTER;
// call type used by IMessageFilter::HandleIncomingMessage
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;
// status of server call - returned by IMessageFilter::HandleIncomingCall
// 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;
// additional interface information about the incoming call
typedef struct tagINTERFACEINFO
{
IUnknown *pUnk; // the pointer to the object
IID iid; // interface id
WORD wMethod; // interface method
} 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
);
}
/****************************************************************************
* Object Remoting Interfaces
****************************************************************************/
[
local,
object,
uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
]
interface IRpcChannelBuffer : IUnknown
{
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
(
void
);
}
[
local,
object,
uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
]
interface IRpcChannelBuffer2 : IRpcChannelBuffer
{
HRESULT GetProtocolVersion
(
[in,out] DWORD *pdwVersion
);
}
[
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(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
]
interface IRpcChannelBuffer3 : IRpcChannelBuffer2
{
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(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
{
HRESULT Connect
(
[in, unique] IRpcChannelBuffer *pRpcChannelBuffer
);
void Disconnect
(
void
);
}
[
local,
object,
uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
]
interface IRpcStubBuffer : IUnknown
{
HRESULT Connect
(
[in] IUnknown *pUnkServer
);
void Disconnect();
HRESULT Invoke
(
[in] RPCOLEMESSAGE *_prpcmsg,
[in] IRpcChannelBuffer *_pRpcChannelBuffer
);
IRpcStubBuffer *IsIIDSupported
(
[in] REFIID riid
);
ULONG CountRefs
(
void
);
HRESULT DebugServerQueryInterface
(
void **ppv
);
void DebugServerRelease
(
void *pv
);
}
[
local,
object,
uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
]
interface IPSFactoryBuffer : IUnknown
{
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
);
}
cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
cpp_quote( "// This interface is only valid on Windows NT 4.0" )
// This structure contains additional data for hooks. As a backward
// compatability hack, the entire structure is passed in place of the
// RIID parameter on all hook methods. Thus the IID must be the first
// parameter. As a forward compatability hack the second field is the
// current size of the structure.
typedef struct SChannelHookCallInfo
{
IID iid;
DWORD cbSize;
GUID uCausality;
DWORD dwServerPid;
DWORD iMethod;
void *pObject;
} SChannelHookCallInfo;
[
local,
object,
uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
]
interface IChannelHook : IUnknown
{
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 );
};
cpp_quote( "#endif //DCOM" )
cpp_quote("")
cpp_quote("// Well-known Property Set Format IDs")
extern const FMTID FMTID_SummaryInformation;
extern const FMTID FMTID_DocSummaryInformation;
extern const FMTID FMTID_UserDefinedProperties;
extern const FMTID FMTID_DiscardableInformation;
extern const FMTID FMTID_ImageSummaryInformation;
extern const FMTID FMTID_AudioSummaryInformation;
extern const FMTID FMTID_VideoSummaryInformation;
extern const FMTID FMTID_MediaFileSummaryInformation;
/****************************************************************************
* Connection Point Interfaces
****************************************************************************/
#ifdef __INCLUDE_CPIFS
interface IConnectionPointContainer;
interface IConnectionPoint;
interface IEnumConnections;
interface IEnumConnectionPoints;
[
object,
uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
pointer_default(unique)
]
interface IConnectionPoint : IUnknown
{
typedef IConnectionPoint * PCONNECTIONPOINT;
typedef IConnectionPoint * LPCONNECTIONPOINT;
HRESULT GetConnectionInterface
(
[out] IID * piid
);
HRESULT GetConnectionPointContainer
(
[out] IConnectionPointContainer ** ppCPC
);
HRESULT Advise
(
[in] IUnknown * pUnkSink,
[out] DWORD * pdwCookie
);
HRESULT Unadvise
(
[in] DWORD dwCookie
);
HRESULT EnumConnections
(
[out] IEnumConnections ** ppEnum
);
}
[
object,
uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
pointer_default(unique)
]
interface IConnectionPointContainer : IUnknown
{
typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
HRESULT EnumConnectionPoints
(
[out] IEnumConnectionPoints ** ppEnum
);
HRESULT FindConnectionPoint
(
[in] REFIID riid,
[out] IConnectionPoint ** ppCP
);
}
[
object,
uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
pointer_default(unique)
]
interface IEnumConnections : IUnknown
{
typedef IEnumConnections * PENUMCONNECTIONS;
typedef IEnumConnections * LPENUMCONNECTIONS;
typedef struct tagCONNECTDATA
{
IUnknown * pUnk;
DWORD dwCookie;
} CONNECTDATA;
typedef struct tagCONNECTDATA * PCONNECTDATA;
typedef struct tagCONNECTDATA * LPCONNECTDATA;
[local]
HRESULT Next(
[in] ULONG cConnections,
[out,
size_is(cConnections),
length_is(*lpcFetched)] CONNECTDATA * rgcd,
[out] ULONG * lpcFetched
);
[call_as(Next)]
HRESULT RemoteNext(
[in] ULONG cConnections,
[out,
size_is(cConnections),
length_is(*lpcFetched)] CONNECTDATA * rgcd,
[out] ULONG * lpcFetched
);
HRESULT Skip
(
[in] ULONG cConnections
);
HRESULT Reset
(
void
);
HRESULT Clone
(
[out] IEnumConnections ** ppEnum
);
}
[
object,
uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
pointer_default(unique)
]
interface IEnumConnectionPoints : IUnknown
{
typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
[local]
HRESULT Next(
[in] ULONG cConnections,
[out,
size_is(cConnections),
length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
[out] ULONG * lpcFetched
);
[call_as(Next)]
HRESULT RemoteNext(
[in] ULONG cConnections,
[out,
size_is(cConnections),
length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
[out] ULONG * lpcFetched
);
HRESULT Skip
(
[in] ULONG cConnections
);
HRESULT Reset
(
void
);
HRESULT Clone
(
[out] IEnumConnectionPoints ** ppEnum
);
}
#endif // __INCLUDE_CPIFS
cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
cpp_quote( "// This interface is only valid on Windows NT 4.0" )
[
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 enum tagEOLE_AUTHENTICATION_CAPABILITIES
{
EOAC_NONE = 0x0,
EOAC_MUTUAL_AUTH = 0x1,
EOAC_STATIC_CLOAKING = 0x20,
EOAC_DYNAMIC_CLOAKING = 0x40,
EOAC_ANY_AUTHORITY = 0x80,
EOAC_MAKE_FULLSIC = 0x100,
EOAC_DEFAULT = 0x800,
// These are only valid for CoInitializeSecurity
EOAC_SECURE_REFS = 0x2,
EOAC_ACCESS_CONTROL = 0x4,
EOAC_APPID = 0x8,
EOAC_DYNAMIC = 0x10,
EOAC_REQUIRE_FULLSIC = 0x200,
EOAC_AUTO_IMPERSONATE = 0x400,
EOAC_NO_CUSTOM_MARSHAL = 0x2000,
EOAC_DISABLE_AAA = 0x1000
} EOLE_AUTHENTICATION_CAPABILITIES;
const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR *) -1;
const void *COLE_DEFAULT_AUTHINFO = (void *) -1;
typedef struct tagSOLE_AUTHENTICATION_INFO
{
DWORD dwAuthnSvc;
DWORD dwAuthzSvc;
void *pAuthInfo;
} SOLE_AUTHENTICATION_INFO, *PSOLE_AUTHENTICATION_INFO;
typedef struct tagSOLE_AUTHENTICATION_LIST
{
DWORD cAuthInfo;
SOLE_AUTHENTICATION_INFO *aAuthInfo;
} SOLE_AUTHENTICATION_LIST, *PSOLE_AUTHENTICATION_LIST;
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 *pCapabilites
);
HRESULT SetBlanket
(
[in] IUnknown *pProxy,
[in] DWORD dwAuthnSvc,
[in] DWORD dwAuthzSvc,
[in] OLECHAR *pServerPrincName,
[in] DWORD dwAuthnLevel,
[in] DWORD dwImpLevel,
[in] void *pAuthInfo,
[in] DWORD dwCapabilities
);
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,
[in,out] DWORD *pCapabilities
);
HRESULT ImpersonateClient();
HRESULT RevertToSelf();
BOOL IsImpersonating();
}
[
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);
}
[
object,
local,
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 = 0x01}; // Rpc transport-specific timeout.
cpp_quote( "#endif //DCOM" )
[
object,
uuid(99caf010-415e-11cf-8814-00aa00b569f5),
pointer_default(unique)
]
interface IFillLockBytes: IUnknown
{
[local]
HRESULT FillAppend
(
[in, size_is(cb)] void const *pv,
[in] ULONG cb,
[out] ULONG *pcbWritten
);
[call_as(FillAppend)]
HRESULT _stdcall RemoteFillAppend(
[in, size_is(cb)] byte const *pv,
[in] ULONG cb,
[out] ULONG *pcbWritten);
[local]
HRESULT FillAt
(
[in] ULARGE_INTEGER ulOffset,
[in, size_is(cb)] void const *pv,
[in] ULONG cb,
[out] ULONG *pcbWritten
);
[call_as(FillAt)]
HRESULT _stdcall RemoteFillAt(
[in] ULARGE_INTEGER ulOffset,
[in, size_is(cb)] byte const *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 __stdcall LayoutScript
(
[in] StorageLayout *pStorageLayout,
[in] DWORD nEntries,
[in] DWORD glfInterleavedFlag
);
HRESULT __stdcall BeginMonitor(void);
HRESULT __stdcall EndMonitor(void);
HRESULT __stdcall ReLayoutDocfile
(
[in] OLECHAR *pwcsNewDfName
);
HRESULT __stdcall ReLayoutDocfileOnILockBytes
(
[in] ILockBytes *pILockBytes
);
}
[
object,
uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
]
interface IBlockingLock: IUnknown
{
HRESULT Lock([in] DWORD dwTimeout);
HRESULT Unlock(void);
}
[
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);
}
[
uuid(00000022-0000-0000-C000-000000000046),
version(1.0),
pointer_default(unique)
, object
]
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
);
};
[
object,
uuid(0e6d4d92-6738-11cf-9608-00aa00680db4),
pointer_default(unique)
]
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 (void);
}
[
local,
object,
uuid(0000002A-0000-0000-C000-000000000046)
]
interface IAsyncManager : IUnknown
{
typedef enum tagDCOM_CALL_STATE
{
DCOM_NONE = 0x0,
DCOM_CALL_COMPLETE = 0x1,
DCOM_CALL_CANCELED = 0x2,
} 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 );
}
[ uuid(00000149-0000-0000-C000-000000000046),
version(0.0),
pointer_default(unique),
local,
object
]
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);
};
/****************************************************************************
* Pipe interfaces
****************************************************************************/
#if (__midl >= 500)
#define PIPE_ASYNC_UUID(async_iid) async_uuid(async_iid),
#else
#define PIPE_ASYNC_UUID(async_iid)
#endif
#define NEW_PIPE_INTERFACE(iid, async_iid, name, type) \
[ \
object, \
uuid(iid), \
PIPE_ASYNC_UUID(async_iid) \
pointer_default(unique) \
] \
interface IPipe##name : IUnknown \
{ \
HRESULT Pull \
( \
[out, size_is(cRequest), length_is(*pcReturned)] type *buf, \
[in] ULONG cRequest, \
[out] ULONG *pcReturned \
); \
\
HRESULT Push \
( \
[in, size_is(cSent)] type *buf, \
[in] ULONG cSent \
); \
}
NEW_PIPE_INTERFACE( DB2F3ACA-2F86-11d1-8E04-00C04FB9989A,
DB2F3ACB-2F86-11d1-8E04-00C04FB9989A,
Byte,
BYTE)
NEW_PIPE_INTERFACE( DB2F3ACC-2F86-11d1-8E04-00C04FB9989A,
DB2F3ACD-2F86-11d1-8E04-00C04FB9989A,
Long,
LONG)
NEW_PIPE_INTERFACE( DB2F3ACE-2F86-11d1-8E04-00C04FB9989A,
DB2F3ACF-2F86-11d1-8E04-00C04FB9989A,
Double,
DOUBLE)
/****************************************************************************
* Thumbnail generator interface
****************************************************************************/
[uuid(969dc708-5c76-11d1-8d86-0000f804b057),
object
]
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
);
}
/****************************************************************************
* Dummy Interface to force inclusion of HICON and HDC in proxy/stub code....
****************************************************************************/
[
object,
pointer_default(unique),
uuid(947990de-cc28-11d2-a0f7-00805f858fb1)
]
interface IDummyHICONIncluder : IUnknown
{
HRESULT Dummy([in]HICON h1, [in] HDC h2);
}
/****************************************************************************
* ICOMThreadingInfo and enums
****************************************************************************/
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;
typedef DWORD APARTMENTID;
[
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);
};
cpp_quote( "#if (_WIN32_WINNT >= 0x0501 )" )
[
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);
};
cpp_quote( "#endif" )
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(pop)")
cpp_quote("#else")
cpp_quote("#pragma warning(default:4201)")
cpp_quote("#endif")
cpp_quote("#endif")