mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-01 23:23:38 +00:00
![Nikolay Sivov](/assets/img/avatar_default.png)
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
1234 lines
25 KiB
Plaintext
1234 lines
25 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
#ifndef DO_NO_IMPORTS
|
|
import "unknwn.idl";
|
|
#endif
|
|
|
|
cpp_quote("#ifndef _OBJIDLBASE_")
|
|
cpp_quote("#define _OBJIDLBASE_")
|
|
|
|
interface IStream;
|
|
interface IEnumString;
|
|
|
|
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(94ea2b94-e9cc-49e0-c0ff-ee64ca8f5b90)
|
|
]
|
|
interface IAgileObject : IUnknown
|
|
{
|
|
}
|
|
|
|
[
|
|
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] SIZE_T cb);
|
|
|
|
LPVOID Realloc(
|
|
[in] LPVOID pv,
|
|
[in] SIZE_T cb);
|
|
|
|
void Free(
|
|
[in] LPVOID pv);
|
|
|
|
SIZE_T GetSize(
|
|
[in] LPVOID pv);
|
|
|
|
int DidAlloc(LPVOID pv);
|
|
|
|
void HeapMinimize();
|
|
}
|
|
|
|
[
|
|
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);
|
|
}
|
|
|
|
[
|
|
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);
|
|
}
|
|
|
|
/******************** 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);
|
|
}
|
|
|
|
|
|
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
|
|
]
|
|
interface IRpcChannelBuffer : IUnknown
|
|
{
|
|
typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
|
|
|
|
typedef unsigned long RPCOLEDATAREP;
|
|
|
|
typedef struct tagRPCOLEMESSAGE {
|
|
void *reserved1;
|
|
RPCOLEDATAREP dataRepresentation;
|
|
void *Buffer;
|
|
ULONG cbBuffer;
|
|
ULONG iMethod;
|
|
void *reserved2[5];
|
|
ULONG rpcFlags;
|
|
} RPCOLEMESSAGE;
|
|
|
|
typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
|
|
|
|
HRESULT GetBuffer(
|
|
[in] RPCOLEMESSAGE *pMessage,
|
|
[in] REFIID riid);
|
|
|
|
HRESULT SendReceive(
|
|
[in,out] RPCOLEMESSAGE *pMessage,
|
|
[out] ULONG *pStatus);
|
|
|
|
HRESULT FreeBuffer(
|
|
[in] RPCOLEMESSAGE *pMessage);
|
|
|
|
HRESULT GetDestCtx(
|
|
[out] DWORD *pdwDestContext,
|
|
[out] void **ppvDestContext);
|
|
|
|
HRESULT IsConnected();
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
|
|
]
|
|
interface IRpcChannelBuffer2 : IRpcChannelBuffer
|
|
{
|
|
typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
|
|
|
|
HRESULT GetProtocolVersion(
|
|
[in,out] DWORD *pdwVersion);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
|
|
]
|
|
interface IRpcChannelBuffer3 : IRpcChannelBuffer2
|
|
{
|
|
typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
|
|
|
|
HRESULT Send(
|
|
[in,out] RPCOLEMESSAGE *pMsg,
|
|
[out] ULONG *pulStatus);
|
|
|
|
HRESULT Receive(
|
|
[in,out] RPCOLEMESSAGE *pMsg,
|
|
[in] ULONG ulSize,
|
|
[out] ULONG *pulStatus);
|
|
|
|
HRESULT Cancel(
|
|
[in] RPCOLEMESSAGE *pMsg);
|
|
|
|
HRESULT GetCallContext(
|
|
[in] RPCOLEMESSAGE *pMsg,
|
|
[in] REFIID riid,
|
|
[out] void **pInterface);
|
|
|
|
HRESULT GetDestCtxEx(
|
|
[in] RPCOLEMESSAGE *pMsg,
|
|
[out] DWORD *pdwDestContext,
|
|
[out] void **ppvDestContext);
|
|
|
|
HRESULT GetState(
|
|
[in] RPCOLEMESSAGE *pMsg,
|
|
[out] DWORD *pState);
|
|
|
|
HRESULT RegisterAsync(
|
|
[in] RPCOLEMESSAGE *pMsg,
|
|
[in] IAsyncManager *pAsyncMgr);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
|
|
pointer_default(unique)
|
|
]
|
|
interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
|
|
{
|
|
HRESULT Send(
|
|
[in, out] RPCOLEMESSAGE *pMsg,
|
|
[in] ISynchronize *pSync,
|
|
[out] ULONG *pulStatus);
|
|
|
|
HRESULT Receive(
|
|
[in, out] RPCOLEMESSAGE *pMsg,
|
|
[out] ULONG *pulStatus);
|
|
|
|
HRESULT GetDestCtxEx(
|
|
[in] RPCOLEMESSAGE *pMsg,
|
|
[out] DWORD *pdwDestContext,
|
|
[out] void **ppvDestContext);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(58a08519-24c8-4935-b482-3fd823333a4f)
|
|
]
|
|
interface IRpcSyntaxNegotiate : IUnknown
|
|
{
|
|
HRESULT NegotiateSyntax(
|
|
[in, out] RPCOLEMESSAGE *pMsg);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
|
|
]
|
|
interface IRpcProxyBuffer : IUnknown
|
|
{
|
|
typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
|
|
|
|
HRESULT Connect(
|
|
[in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
|
|
|
|
void Disconnect();
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
|
|
]
|
|
interface IRpcStubBuffer : IUnknown
|
|
{
|
|
typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
|
|
|
|
HRESULT Connect(
|
|
[in] IUnknown *pUnkServer);
|
|
|
|
void Disconnect();
|
|
|
|
HRESULT Invoke(
|
|
[in] RPCOLEMESSAGE *_prpcmsg,
|
|
[in] IRpcChannelBuffer *_pRpcChannelBuffer);
|
|
|
|
IRpcStubBuffer *IsIIDSupported(
|
|
[in] REFIID riid);
|
|
|
|
ULONG CountRefs();
|
|
|
|
HRESULT DebugServerQueryInterface(
|
|
void **ppv);
|
|
|
|
void DebugServerRelease(
|
|
void *pv);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
|
|
]
|
|
interface IPSFactoryBuffer : IUnknown
|
|
{
|
|
typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
|
|
|
|
HRESULT CreateProxy(
|
|
[in] IUnknown *pUnkOuter,
|
|
[in] REFIID riid,
|
|
[out] IRpcProxyBuffer **ppProxy,
|
|
[out] void **ppv);
|
|
|
|
HRESULT CreateStub(
|
|
[in] REFIID riid,
|
|
[in, unique] IUnknown *pUnkServer,
|
|
[out] IRpcStubBuffer **ppStub);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
|
|
]
|
|
interface IChannelHook : IUnknown
|
|
{
|
|
typedef [unique] IChannelHook *LPCHANNELHOOK;
|
|
|
|
typedef struct SChannelHookCallInfo {
|
|
IID iid;
|
|
DWORD cbSize;
|
|
GUID uCausality;
|
|
DWORD dwServerPid;
|
|
DWORD iMethod;
|
|
void *pObject;
|
|
} SChannelHookCallInfo;
|
|
|
|
void ClientGetSize(
|
|
[in] REFGUID uExtent,
|
|
[in] REFIID riid,
|
|
[out] ULONG *pDataSize);
|
|
|
|
void ClientFillBuffer(
|
|
[in] REFGUID uExtent,
|
|
[in] REFIID riid,
|
|
[in, out] ULONG *pDataSize,
|
|
[in] void *pDataBuffer);
|
|
|
|
void ClientNotify(
|
|
[in] REFGUID uExtent,
|
|
[in] REFIID riid,
|
|
[in] ULONG cbDataSize,
|
|
[in] void *pDataBuffer,
|
|
[in] DWORD lDataRep,
|
|
[in] HRESULT hrFault);
|
|
|
|
void ServerNotify(
|
|
[in] REFGUID uExtent,
|
|
[in] REFIID riid,
|
|
[in] ULONG cbDataSize,
|
|
[in] void *pDataBuffer,
|
|
[in] DWORD lDataRep);
|
|
|
|
void ServerGetSize(
|
|
[in] REFGUID uExtent,
|
|
[in] REFIID riid,
|
|
[in] HRESULT hrFault,
|
|
[out] ULONG *pDataSize);
|
|
|
|
void ServerFillBuffer(
|
|
[in] REFGUID uExtent,
|
|
[in] REFIID riid,
|
|
[in, out] ULONG *pDataSize,
|
|
[in] void *pDataBuffer,
|
|
[in] HRESULT hrFault );
|
|
}
|
|
|
|
extern const FMTID FMTID_SummaryInformation;
|
|
extern const FMTID FMTID_DocSummaryInformation;
|
|
extern const FMTID FMTID_UserDefinedProperties;
|
|
|
|
|
|
/******************** Connection Points ********************/
|
|
/* FIXME */
|
|
|
|
/******************** DCOM ********************/
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(0000013D-0000-0000-C000-000000000046)
|
|
]
|
|
interface IClientSecurity : IUnknown
|
|
{
|
|
typedef struct tagSOLE_AUTHENTICATION_SERVICE {
|
|
DWORD dwAuthnSvc;
|
|
DWORD dwAuthzSvc;
|
|
OLECHAR *pPrincipalName;
|
|
HRESULT hr;
|
|
} SOLE_AUTHENTICATION_SERVICE;
|
|
|
|
typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
|
|
|
|
typedef struct tagSOLE_AUTHENTICATION_INFO {
|
|
DWORD dwAuthnSvc;
|
|
DWORD dwAuthzSvc;
|
|
void *pAuthInfo;
|
|
} SOLE_AUTHENTICATION_INFO;
|
|
|
|
const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1;
|
|
const void *COLE_DEFAULT_AUTHINFO = (void*) -1;
|
|
|
|
typedef struct tagSOLE_AUTHENTICATION_LIST {
|
|
DWORD cAuthInfo;
|
|
SOLE_AUTHENTICATION_INFO *aAuthInfo;
|
|
} SOLE_AUTHENTICATION_LIST;
|
|
|
|
typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
|
|
EOAC_NONE = 0x0,
|
|
EOAC_MUTUAL_AUTH = 0x1,
|
|
EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */
|
|
EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */
|
|
EOAC_APPID = 0x8, /* CoInitializeSecurity only */
|
|
EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */
|
|
EOAC_STATIC_CLOAKING = 0x20,
|
|
EOAC_DYNAMIC_CLOAKING = 0x40,
|
|
EOAC_ANY_AUTHORITY = 0x80,
|
|
EOAC_MAKE_FULLSIC = 0x100,
|
|
EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */
|
|
EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */
|
|
EOAC_DEFAULT = 0x800,
|
|
EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */
|
|
EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */
|
|
} EOLE_AUTHENTICATION_CAPABILITIES;
|
|
|
|
HRESULT QueryBlanket(
|
|
[in] IUnknown *pProxy,
|
|
[out] DWORD *pAuthnSvc,
|
|
[out] DWORD *pAuthzSvc,
|
|
[out] OLECHAR **pServerPrincName,
|
|
[out] DWORD *pAuthnLevel,
|
|
[out] DWORD *pImpLevel,
|
|
[out] void **pAuthInfo,
|
|
[out] DWORD *pCapabilities);
|
|
|
|
HRESULT SetBlanket(
|
|
[in] IUnknown *pProxy,
|
|
[in] DWORD AuthnSvc,
|
|
[in] DWORD AuthzSvc,
|
|
[in] OLECHAR *pServerPrincName,
|
|
[in] DWORD AuthnLevel,
|
|
[in] DWORD ImpLevel,
|
|
[in] void *pAuthInfo,
|
|
[in] DWORD Capabilities);
|
|
|
|
HRESULT CopyProxy(
|
|
[in] IUnknown *pProxy,
|
|
[out] IUnknown **ppCopy);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(0000013E-0000-0000-C000-000000000046)
|
|
]
|
|
interface IServerSecurity : IUnknown
|
|
{
|
|
HRESULT QueryBlanket(
|
|
[out] DWORD *pAuthnSvc,
|
|
[out] DWORD *pAuthzSvc,
|
|
[out] OLECHAR **pServerPrincName,
|
|
[out] DWORD *pAuthnLevel,
|
|
[out] DWORD *pImpLevel,
|
|
[out] void **pPrivs,
|
|
[out] DWORD *pCapabilities);
|
|
|
|
HRESULT ImpersonateClient();
|
|
|
|
HRESULT RevertToSelf();
|
|
|
|
BOOL IsImpersonating();
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(00000024-0000-0000-C000-000000000046)
|
|
]
|
|
interface IAsyncSetup : IUnknown
|
|
{
|
|
HRESULT GetAsyncManager(
|
|
[in] REFIID riid,
|
|
[in] IUnknown *pOuter,
|
|
[in] DWORD dwFlags,
|
|
[out] IUnknown **ppInner,
|
|
[out] IAsyncManager **ppAsyncMgr);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(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);
|
|
}
|
|
|
|
|
|
[
|
|
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 _APTTYPEQUALIFIER {
|
|
APTTYPEQUALIFIER_NONE,
|
|
APTTYPEQUALIFIER_IMPLICIT_MTA,
|
|
APTTYPEQUALIFIER_NA_ON_MTA,
|
|
APTTYPEQUALIFIER_NA_ON_STA,
|
|
APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA,
|
|
APTTYPEQUALIFIER_NA_ON_MAINSTA
|
|
} APTTYPEQUALIFIER;
|
|
|
|
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);
|
|
}
|
|
|
|
typedef enum tagGLOBALOPT_PROPERTIES
|
|
{
|
|
COMGLB_EXCEPTION_HANDLING = 1,
|
|
COMGLB_APPID = 2,
|
|
COMGLB_RPC_THREADPOOL_SETTING = 3,
|
|
COMGLB_RO_SETTINGS = 4,
|
|
COMGLB_UNMARSHALING_POLICY = 5,
|
|
COMGLB_PROPERTIES_RESERVED1 = 6,
|
|
COMGLB_PROPERTIES_RESERVED2 = 7,
|
|
COMGLB_PROPERTIES_RESERVED3 = 8,
|
|
} GLOBALOPT_PROPERTIES;
|
|
|
|
typedef enum tagGLOBALOPT_EH_VALUES
|
|
{
|
|
COMGLB_EXCEPTION_HANDLE = 0,
|
|
COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1,
|
|
COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
|
|
COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2
|
|
} GLOBALOPT_EH_VALUES;
|
|
|
|
typedef enum tagGLOBALOPT_RPCTP_VALUES
|
|
{
|
|
COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
|
|
COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
|
|
} GLOBALOPT_RPCTP_VALUES;
|
|
|
|
typedef enum tagGLOBALOPT_RO_FLAGS
|
|
{
|
|
COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES = 0x1,
|
|
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES = 0x2,
|
|
COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES = 0x4,
|
|
COMGLB_FAST_RUNDOWN = 0x8,
|
|
COMGLB_RESERVED1 = 0x10,
|
|
COMGLB_RESERVED2 = 0x20,
|
|
COMGLB_RESERVED3 = 0x40,
|
|
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES = 0x80,
|
|
COMGLB_RESERVED4 = 0x100,
|
|
COMGLB_RESERVED5 = 0x200,
|
|
COMGLB_RESERVED6 = 0x400,
|
|
} GLOBALOPT_RO_FLAGS;
|
|
|
|
typedef enum tagGLOBALOPT_UNMARSHALING_POLICY_VALUES
|
|
{
|
|
COMGLB_UNMARSHALING_POLICY_NORMAL = 0,
|
|
COMGLB_UNMARSHALING_POLICY_STRONG = 1,
|
|
COMGLB_UNMARSHALING_POLICY_HYBRID = 2,
|
|
} GLOBALOPT_UNMARSHALING_POLICY_VALUES;
|
|
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(0000015B-0000-0000-C000-000000000046)
|
|
]
|
|
interface IGlobalOptions : IUnknown
|
|
{
|
|
HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value);
|
|
HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value);
|
|
}
|
|
|
|
cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
|
|
|
|
typedef DWORD CPFLAGS;
|
|
|
|
typedef struct tagContextProperty
|
|
{
|
|
GUID policyId;
|
|
CPFLAGS flags;
|
|
[unique] IUnknown *pUnk;
|
|
} ContextProperty;
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(000001c1-0000-0000-C000-000000000046)
|
|
]
|
|
interface IEnumContextProps : IUnknown
|
|
{
|
|
typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
|
|
|
|
HRESULT Next(
|
|
[in] ULONG celt,
|
|
[out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
|
|
[out] ULONG *pceltFetched);
|
|
|
|
HRESULT Skip(
|
|
[in] ULONG celt);
|
|
|
|
HRESULT Reset();
|
|
|
|
HRESULT Clone(
|
|
[out] IEnumContextProps **ppEnumContextProps);
|
|
|
|
HRESULT Count(
|
|
[out] ULONG *pcelt);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(000001c0-0000-0000-C000-000000000046)
|
|
]
|
|
interface IContext : IUnknown
|
|
{
|
|
HRESULT SetProperty(
|
|
[in] REFGUID policyId,
|
|
[in] CPFLAGS flags,
|
|
[in] IUnknown *pUnk);
|
|
|
|
HRESULT RemoveProperty(
|
|
[in] REFGUID policyId);
|
|
|
|
HRESULT GetProperty(
|
|
[in] REFGUID guid,
|
|
[out] CPFLAGS *pFlags,
|
|
[out] IUnknown **ppUnk);
|
|
|
|
HRESULT EnumContextProps(
|
|
[out] IEnumContextProps **ppEnumContextProps);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(000001c6-0000-0000-c000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IObjContext : IContext
|
|
{
|
|
void Reserved1();
|
|
void Reserved2();
|
|
void Reserved3();
|
|
void Reserved4();
|
|
void Reserved5();
|
|
void Reserved6();
|
|
void Reserved7();
|
|
}
|
|
|
|
cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")
|
|
cpp_quote("#endif /* defined _OBJIDLBASE_ */")
|