3160 lines
69 KiB
Plaintext
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")
|
||
|
|
||
|
|