1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-08 20:06:18 +00:00
wine/include/objidl.idl
Robert Shearman a5cb9c5590 Make IAdviseSink methods non-async and remove the IAsyncManager
parameter hack that native COM used to use (but not any more). Async
calls are an optimisation that we're not going to support in the near
future.
2005-11-29 10:43:52 +01:00

2373 lines
48 KiB
Plaintext

/*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import "unknwn.idl";
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 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;
/* FIXME: C/C++ nameless union version */
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] ;
};
[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;
};
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 enum tagEOLE_AUTHENTICATION_CAPABILITIES {
EOAC_NONE = 0x0,
EOAC_MUTUAL_AUTH = 0x1,
EOAC_CLOAKING = 0x10,
EOAC_SECURE_REFS = 0x2,
EOAC_ACCESS_CONTROL = 0x4,
EOAC_APPID = 0x8
} 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 *pCapabilites);
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);
}