[PATCH v2 1/2] include: Split objidl.idl to objidlbase.idl.

Rémi Bernon rbernon at codeweavers.com
Fri Oct 2 05:04:13 CDT 2020


Windows SDKs use #include here to import one into the other, so we do
the same.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---

v2: So this is probably how it should be, at least to match recent
    Windows SDKs, and to define IAgileObject in the right place.

Supersedes: 193527

 include/Makefile.in    |    1 +
 include/objidl.idl     | 1217 +---------------------------------------
 include/objidlbase.idl | 1198 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 1227 insertions(+), 1189 deletions(-)
 create mode 100644 include/objidlbase.idl

diff --git a/include/Makefile.in b/include/Makefile.in
index 91a02645c33..8621c5a8ff8 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -532,6 +532,7 @@ SOURCES = \
 	objbase.h \
 	objectarray.idl \
 	objidl.idl \
+	objidlbase.idl \
 	objsafe.idl \
 	objsel.h \
 	ocidl.idl \
diff --git a/include/objidl.idl b/include/objidl.idl
index a86ceb8b1d6..7576a686aeb 100644
--- a/include/objidl.idl
+++ b/include/objidl.idl
@@ -18,166 +18,18 @@
 
 #ifndef DO_NO_IMPORTS
 import "unknwn.idl";
+#define DO_NO_IMPORTS
+#define OBJIDL_UNDEF_DO_NO_IMPORTS
+#endif
+
+#include "objidlbase.idl"
+#ifdef OBJIDL_UNDEF_DO_NO_IMPORTS
+#undef DO_NO_IMPORTS
 #endif
 
-interface IStream;
-interface IEnumString;
 interface IRunningObjectTable;
 interface IMoniker;
 interface IAdviseSink;
-interface IAsyncManager;
-interface ISynchronize;
-
-typedef struct _COSERVERINFO {
-  DWORD dwReserved1;
-  LPWSTR pwszName;
-  COAUTHINFO *pAuthInfo;
-  DWORD dwReserved2;
-} COSERVERINFO;
-
-/******************** Fundamentals ********************/
-
-[
-  local,
-  object,
-  uuid(00000003-0000-0000-C000-000000000046)
-]
-interface IMarshal : IUnknown
-{
-  typedef [unique] IMarshal *LPMARSHAL;
-
-  HRESULT GetUnmarshalClass(
-    [in] REFIID riid,
-    [in, unique] void *pv,
-    [in] DWORD dwDestContext,
-    [in, unique] void *pvDestContext,
-    [in] DWORD mshlflags,
-    [out] CLSID *pCid);
-
-  HRESULT GetMarshalSizeMax(
-    [in] REFIID riid,
-    [in, unique] void *pv,
-    [in] DWORD dwDestContext,
-    [in, unique] void *pvDestContext,
-    [in] DWORD mshlflags,
-    [out] DWORD *pSize);
-
-  HRESULT MarshalInterface(
-    [in, unique] IStream *pStm,
-    [in] REFIID riid,
-    [in, unique] void *pv,
-    [in] DWORD dwDestContext,
-    [in, unique] void *pvDestContext,
-    [in] DWORD mshlflags);
-
-  HRESULT UnmarshalInterface(
-    [in, unique] IStream *pStm,
-    [in] REFIID riid,
-    [out] void **ppv);
-
-  HRESULT ReleaseMarshalData(
-    [in, unique] IStream *pStm);
-
-  HRESULT DisconnectObject(
-    [in] DWORD dwReserved);
-}
-
-[
-    local,
-    object,
-    uuid(000001cf-0000-0000-C000-000000000046)
-]
-interface IMarshal2 : IMarshal
-{
-    typedef [unique] IMarshal2 *LPMARSHAL2;
-}
-
-[
-  local,
-  object,
-  uuid(00000018-0000-0000-C000-000000000046)
-]
-interface IStdMarshalInfo : IUnknown
-{
-  typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
-
-  HRESULT GetClassForHandler(
-    [in] DWORD dwDestContext,
-    [in, unique] void *pvDestContext,
-    [out] CLSID *pClsid);
-}
-
-[
-  local,
-  object,
-  uuid(00000019-0000-0000-C000-000000000046)
-]
-interface IExternalConnection : IUnknown
-{
-  typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
-
-  typedef enum tagEXTCONN {
-    EXTCONN_STRONG   = 0x0001,
-    EXTCONN_WEAK     = 0x0002,
-    EXTCONN_CALLABLE = 0x0004
-  } EXTCONN;
-
-  DWORD AddConnection(
-    [in] DWORD extconn,
-    [in] DWORD reserved);
-
-  DWORD ReleaseConnection(
-    [in] DWORD extconn,
-    [in] DWORD reserved,
-    [in] BOOL fLastReleaseCloses);
-}
-
-[
-  local,
-  object,
-  uuid(00000020-0000-0000-C000-000000000046)
-]
-interface IMultiQI : IUnknown
-{
-  typedef [unique] IMultiQI *LPMULTIQI;
-
-  typedef struct tagMULTI_QI {
-    const IID *pIID;
-    IUnknown *pItf;
-    HRESULT hr;
-  } MULTI_QI;
-
-  HRESULT QueryMultipleInterfaces(
-    [in] ULONG cMQIs,
-    [in, out] MULTI_QI *pMQIs);
-}
-
-[
-  local,
-  object,
-  uuid(00000002-0000-0000-C000-000000000046)
-]
-interface IMalloc : IUnknown
-{
-  typedef [unique] IMalloc *LPMALLOC;
-
-  LPVOID Alloc(
-    [in] 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,
@@ -233,87 +85,6 @@ interface IMallocSpy : IUnknown
   void PostHeapMinimize();
 }
 
-[
-  local,
-  object,
-  uuid(00000021-0000-0000-C000-000000000046)
-]
-interface IInternalUnknown : IUnknown
-{
-  HRESULT QueryInternalInterface(
-    [in] REFIID riid,
-    [out] void **ppv);
-}
-
-[
-  object,
-  uuid(00000100-0000-0000-C000-000000000046),
-  pointer_default(unique)
-]
-interface IEnumUnknown : IUnknown
-{
-  typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
-
-  [local]
-  HRESULT Next(
-    [in] ULONG celt,
-    [out] IUnknown **rgelt,
-    [out] ULONG *pceltFetched);
-
-  [call_as(Next)]
-  HRESULT RemoteNext(
-    [in] ULONG celt,
-    [out, size_is(celt), length_is(*pceltFetched)]
-    IUnknown **rgelt,
-    [out] ULONG *pceltFetched);
-
-  HRESULT Skip(
-    [in] ULONG celt);
-
-  HRESULT Reset();
-
-  HRESULT Clone(
-    [out] IEnumUnknown **ppenum);
-}
-
-[
-  object,
-  uuid(00000022-0000-0000-C000-000000000046),
-  version(1.0),
-  pointer_default(unique)
-]
-interface ISurrogate : IUnknown
-{
-  typedef [unique] ISurrogate *LPSURROGATE;
-
-  HRESULT LoadDllServer(
-    [in] REFCLSID Clsid);
-  HRESULT FreeSurrogate();
-}
-
-[
-  local,
-  object,
-  uuid(00000146-0000-0000-C000-000000000046)
-]
-interface IGlobalInterfaceTable : IUnknown
-{
-  typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
-
-  HRESULT RegisterInterfaceInGlobal(
-    [in] IUnknown *pUnk,
-    [in] REFIID riid,
-    [out] DWORD *pdwCookie);
-
-  HRESULT RevokeInterfaceFromGlobal(
-    [in] DWORD dwCookie);
-
-  HRESULT GetInterfaceFromGlobal(
-    [in] DWORD dwCookie,
-    [in] REFIID riid,
-    [out, iid_is(riid)] void **ppv);
-}
-
 /******************** Monikers ********************/
 
 [
@@ -668,38 +439,6 @@ interface IROTData : IUnknown
     [out] ULONG *pcbData);
 }
 
-[
-  object,
-  uuid(00000101-0000-0000-C000-000000000046),
-  pointer_default(unique)
-]
-interface IEnumString : IUnknown
-{
-  typedef [unique] IEnumString *LPENUMSTRING;
-
-  [local]
-  HRESULT Next(
-    [in] ULONG celt,
-    [out, size_is(celt), length_is(*pceltFetched)]
-    LPOLESTR *rgelt,
-    [out] ULONG *pceltFetched);
-
-  [call_as(Next)]
-  HRESULT RemoteNext(
-    [in] ULONG celt,
-    [out, size_is(celt), length_is(*pceltFetched)]
-    LPOLESTR *rgelt,
-    [out] ULONG *pceltFetched);
-
-  HRESULT Skip(
-    [in] ULONG celt);
-
-  HRESULT Reset();
-
-  HRESULT Clone(
-    [out] IEnumString **ppenum);
-}
-
 [
   object,
   uuid(00000140-0000-0000-C000-000000000046)
@@ -714,143 +453,6 @@ interface IClassActivator : IUnknown
     [out, iid_is(riid)] void **ppv);
 }
 
-/******************** Storage ********************/
-
-[
-  object,
-  uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
-  pointer_default(unique)
-]
-interface ISequentialStream : IUnknown
-{
-  [local]
-  HRESULT Read(
-    [out, size_is(cb), length_is(*pcbRead)]
-    void *pv,
-    [in] ULONG cb,
-    [out] ULONG *pcbRead);
-
-  [call_as(Read)]
-  HRESULT RemoteRead(
-    [out, size_is(cb), length_is(*pcbRead)]
-    byte *pv,
-    [in] ULONG cb,
-    [out] ULONG *pcbRead);
-
-  [local]
-  HRESULT Write(
-    [in, size_is(cb)] const void *pv,
-    [in] ULONG cb,
-    [out] ULONG *pcbWritten);
-
-  [call_as(Write)]
-  HRESULT RemoteWrite(
-    [in, size_is(cb)] const byte *pv,
-    [in] ULONG cb,
-    [out] ULONG *pcbWritten);
-}
-
-[
-  object,
-  uuid(0000000c-0000-0000-C000-000000000046),
-  pointer_default(unique)
-]
-interface IStream : ISequentialStream
-{
-  typedef [unique] IStream *LPSTREAM;
-
-  typedef struct tagSTATSTG {
-    LPOLESTR pwcsName;
-    DWORD type;
-    ULARGE_INTEGER cbSize;
-    FILETIME mtime;
-    FILETIME ctime;
-    FILETIME atime;
-    DWORD grfMode;
-    DWORD grfLocksSupported;
-    CLSID clsid;
-    DWORD grfStateBits;
-    DWORD reserved;
-  } STATSTG;
-
-  typedef enum tagSTGTY {
-    STGTY_STORAGE   = 1,
-    STGTY_STREAM    = 2,
-    STGTY_LOCKBYTES = 3,
-    STGTY_PROPERTY  = 4
-  } STGTY;
-
-  typedef enum tagSTREAM_SEEK {
-    STREAM_SEEK_SET = 0,
-    STREAM_SEEK_CUR = 1,
-    STREAM_SEEK_END = 2
-  } STREAM_SEEK;
-
-  /* these are defined in Linux's fcntl.h,
-   * undefine them to avoid conflicts */
-  cpp_quote("#undef LOCK_MAND")
-  cpp_quote("#undef LOCK_READ")
-  cpp_quote("#undef LOCK_WRITE")
-  cpp_quote("#undef LOCK_RW")
-
-  typedef enum tagLOCKTYPE {
-    LOCK_WRITE      = 1,
-    LOCK_EXCLUSIVE  = 2,
-    LOCK_ONLYONCE   = 4
-  } LOCKTYPE;
-
-  [local]
-  HRESULT Seek(
-    [in] LARGE_INTEGER dlibMove,
-    [in] DWORD dwOrigin,
-    [out] ULARGE_INTEGER *plibNewPosition);
-
-  [call_as(Seek)]
-  HRESULT RemoteSeek(
-    [in] LARGE_INTEGER dlibMove,
-    [in] DWORD dwOrigin,
-    [out] ULARGE_INTEGER *plibNewPosition);
-
-  HRESULT SetSize(
-    [in] ULARGE_INTEGER libNewSize);
-
-  [local]
-  HRESULT CopyTo(
-    [in, unique] IStream *pstm,
-    [in] ULARGE_INTEGER cb,
-    [out] ULARGE_INTEGER *pcbRead,
-    [out] ULARGE_INTEGER *pcbWritten);
-
-  [call_as(CopyTo)]
-  HRESULT RemoteCopyTo(
-    [in, unique] IStream *pstm,
-    [in] ULARGE_INTEGER cb,
-    [out] ULARGE_INTEGER *pcbRead,
-    [out] ULARGE_INTEGER *pcbWritten);
-
-  HRESULT Commit(
-    [in] DWORD grfCommitFlags);
-
-  HRESULT Revert();
-
-  HRESULT LockRegion(
-    [in] ULARGE_INTEGER libOffset,
-    [in] ULARGE_INTEGER cb,
-    [in] DWORD dwLockType);
-
-  HRESULT UnlockRegion(
-    [in] ULARGE_INTEGER libOffset,
-    [in] ULARGE_INTEGER cb,
-    [in] DWORD dwLockType);
-
-  HRESULT Stat(
-    [out] STATSTG *pstatstg,
-    [in] DWORD grfStatFlag);
-
-  HRESULT Clone(
-    [out] IStream **ppstm);
-}
-
 [
   object,
   uuid(0000000d-0000-0000-C000-000000000046),
@@ -1689,604 +1291,36 @@ interface IMessageFilter : IUnknown
 }
 
 [
-  local,
-  object,
-  uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
+    object,
+    uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
 ]
-interface IRpcChannelBuffer : IUnknown
+interface IDirectWriterLock : 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 WaitForWriteAccess(
+        [in] DWORD dwTimeout);
 
-  HRESULT GetDestCtx(
-    [out] DWORD *pdwDestContext,
-    [out] void **ppvDestContext);
+    HRESULT ReleaseWriteAccess();
 
-  HRESULT IsConnected();
+    HRESULT HaveWriteAccess();
 }
 
 [
-  local,
-  object,
-  uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
+    object,
+    uuid(00000026-0000-0000-C000-000000000046)
 ]
-interface IRpcChannelBuffer2 : IRpcChannelBuffer
+interface IUrlMon : IUnknown
 {
-  typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
-
-  HRESULT GetProtocolVersion(
-    [in,out] DWORD *pdwVersion);
-}
-
-[
-  local,
-  object,
-  uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
-]
-interface IRpcChannelBuffer3 : IRpcChannelBuffer2
-{
-  typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
-
-  HRESULT Send(
-    [in,out] RPCOLEMESSAGE *pMsg,
-    [out] ULONG *pulStatus);
-
-  HRESULT Receive(
-    [in,out] RPCOLEMESSAGE *pMsg,
-    [in] ULONG ulSize,
-    [out] ULONG *pulStatus);
-
-  HRESULT Cancel(
-    [in] RPCOLEMESSAGE *pMsg);
-
-  HRESULT GetCallContext(
-    [in] RPCOLEMESSAGE *pMsg,
-    [in] REFIID riid,
-    [out] void **pInterface);
-
-  HRESULT GetDestCtxEx(
-    [in] RPCOLEMESSAGE *pMsg,
-    [out] DWORD *pdwDestContext,
-    [out] void **ppvDestContext);
-
-  HRESULT GetState(
-    [in] RPCOLEMESSAGE *pMsg,
-    [out] DWORD *pState);
-
-  HRESULT RegisterAsync(
-    [in] RPCOLEMESSAGE *pMsg,
-    [in] IAsyncManager *pAsyncMgr);
-}
-
-[
-    local,
-    object,
-    uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
-    pointer_default(unique)
-]
-interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
-{
-    HRESULT Send(
-        [in, out] RPCOLEMESSAGE *pMsg,
-        [in] ISynchronize *pSync,
-        [out] ULONG *pulStatus);
-
-    HRESULT Receive(
-        [in, out] RPCOLEMESSAGE *pMsg,
-        [out] ULONG *pulStatus);
-
-    HRESULT GetDestCtxEx(
-        [in] RPCOLEMESSAGE *pMsg,
-        [out] DWORD *pdwDestContext,
-        [out] void **ppvDestContext);
-}
-
-[
-    local,
-    object,
-    uuid(58a08519-24c8-4935-b482-3fd823333a4f)
-]
-interface IRpcSyntaxNegotiate : IUnknown
-{
-    HRESULT NegotiateSyntax(
-        [in, out] RPCOLEMESSAGE *pMsg);
-}
-
-[
-  local,
-  object,
-  uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
-]
-interface IRpcProxyBuffer : IUnknown
-{
-  typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
-
-  HRESULT Connect(
-    [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
-
-  void Disconnect();
-}
-
-[
-  local,
-  object,
-  uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
-]
-interface IRpcStubBuffer : IUnknown
-{
-  typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
-
-  HRESULT Connect(
-    [in] IUnknown *pUnkServer);
-
-  void Disconnect();
-
-  HRESULT Invoke(
-    [in] RPCOLEMESSAGE *_prpcmsg,
-    [in] IRpcChannelBuffer *_pRpcChannelBuffer);
-
-  IRpcStubBuffer *IsIIDSupported(
-    [in] REFIID riid);
-
-  ULONG CountRefs();
-
-  HRESULT DebugServerQueryInterface(
-    void **ppv);
-
-  void DebugServerRelease(
-    void *pv);
-}
-
-[
-  local,
-  object,
-  uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
-]
-interface IPSFactoryBuffer : IUnknown
-{
-  typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
-
-  HRESULT CreateProxy(
-    [in] IUnknown *pUnkOuter,
-    [in] REFIID riid,
-    [out] IRpcProxyBuffer **ppProxy,
-    [out] void **ppv);
-
-  HRESULT CreateStub(
-    [in] REFIID riid,
-    [in, unique] IUnknown *pUnkServer,
-    [out] IRpcStubBuffer **ppStub);
-}
-
-[
-  local,
-  object,
-  uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
-]
-interface IChannelHook : IUnknown
-{
-  typedef [unique] IChannelHook *LPCHANNELHOOK;
-
-  typedef struct SChannelHookCallInfo {
-    IID iid;
-    DWORD cbSize;
-    GUID uCausality;
-    DWORD dwServerPid;
-    DWORD iMethod;
-    void *pObject;
-  } SChannelHookCallInfo;
-
-  void ClientGetSize(
-    [in] REFGUID uExtent,
-    [in] REFIID riid,
-    [out] ULONG *pDataSize);
-
-  void ClientFillBuffer(
-    [in] REFGUID uExtent,
-    [in] REFIID riid,
-    [in, out] ULONG *pDataSize,
-    [in] void *pDataBuffer);
-
-  void ClientNotify(
-    [in] REFGUID uExtent,
-    [in] REFIID riid,
-    [in] ULONG cbDataSize,
-    [in] void *pDataBuffer,
-    [in] DWORD lDataRep,
-    [in] HRESULT hrFault);
-
-  void ServerNotify(
-    [in] REFGUID uExtent,
-    [in] REFIID riid,
-    [in] ULONG cbDataSize,
-    [in] void *pDataBuffer,
-    [in] DWORD lDataRep);
-
-  void ServerGetSize(
-    [in] REFGUID uExtent,
-    [in] REFIID riid,
-    [in] HRESULT hrFault,
-    [out] ULONG *pDataSize);
-
-  void ServerFillBuffer(
-    [in] REFGUID uExtent,
-    [in] REFIID riid,
-    [in, out] ULONG *pDataSize,
-    [in] void *pDataBuffer,
-    [in] HRESULT hrFault );
-}
-
-extern const FMTID FMTID_SummaryInformation;
-extern const FMTID FMTID_DocSummaryInformation;
-extern const FMTID FMTID_UserDefinedProperties;
-
-
-/******************** Connection Points ********************/
-/* FIXME */
-
-/******************** DCOM ********************/
-
-[
-  local,
-  object,
-  uuid(0000013D-0000-0000-C000-000000000046)
-]
-interface IClientSecurity : IUnknown
-{
-  typedef struct tagSOLE_AUTHENTICATION_SERVICE {
-    DWORD dwAuthnSvc;
-    DWORD dwAuthzSvc;
-    OLECHAR *pPrincipalName;
-    HRESULT hr;
-  } SOLE_AUTHENTICATION_SERVICE;
-
-  typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
-
-  typedef struct tagSOLE_AUTHENTICATION_INFO {
-    DWORD dwAuthnSvc;
-    DWORD dwAuthzSvc;
-    void *pAuthInfo;
-  } SOLE_AUTHENTICATION_INFO;
-
-  const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1;
-  const void *COLE_DEFAULT_AUTHINFO = (void*) -1;
-
-  typedef struct tagSOLE_AUTHENTICATION_LIST {
-    DWORD cAuthInfo;
-    SOLE_AUTHENTICATION_INFO *aAuthInfo;
-  } SOLE_AUTHENTICATION_LIST;
-
-  typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
-    EOAC_NONE               = 0x0,
-    EOAC_MUTUAL_AUTH        = 0x1,
-    EOAC_SECURE_REFS        = 0x2, /* CoInitializeSecurity only */
-    EOAC_ACCESS_CONTROL     = 0x4, /* CoInitializeSecurity only */
-    EOAC_APPID              = 0x8, /* CoInitializeSecurity only */
-    EOAC_DYNAMIC            = 0x10, /* CoInitializeSecurity only */
-    EOAC_STATIC_CLOAKING    = 0x20,
-    EOAC_DYNAMIC_CLOAKING   = 0x40,
-    EOAC_ANY_AUTHORITY      = 0x80,
-    EOAC_MAKE_FULLSIC       = 0x100,
-    EOAC_REQUIRE_FULLSIC    = 0x200, /* CoInitializeSecurity only */
-    EOAC_AUTO_IMPERSONATE   = 0x400, /* CoInitializeSecurity only */
-    EOAC_DEFAULT            = 0x800,
-    EOAC_DISABLE_AAA        = 0x1000, /* CoInitializeSecurity only */
-    EOAC_NO_CUSTOM_MARSHAL  = 0x2000, /* CoInitializeSecurity only */
-  } EOLE_AUTHENTICATION_CAPABILITIES;
-
-  HRESULT QueryBlanket(
-    [in] IUnknown *pProxy,
-    [out] DWORD *pAuthnSvc,
-    [out] DWORD *pAuthzSvc,
-    [out] OLECHAR **pServerPrincName,
-    [out] DWORD *pAuthnLevel,
-    [out] DWORD *pImpLevel,
-    [out] void **pAuthInfo,
-    [out] DWORD *pCapabilities);
-
-  HRESULT SetBlanket(
-    [in] IUnknown *pProxy,
-    [in] DWORD AuthnSvc,
-    [in] DWORD AuthzSvc,
-    [in] OLECHAR *pServerPrincName,
-    [in] DWORD AuthnLevel,
-    [in] DWORD ImpLevel,
-    [in] void *pAuthInfo,
-    [in] DWORD Capabilities);
-
-  HRESULT CopyProxy(
-    [in] IUnknown *pProxy,
-    [out] IUnknown **ppCopy);
-}
-
-[
-  local,
-  object,
-  uuid(0000013E-0000-0000-C000-000000000046)
-]
-interface IServerSecurity : IUnknown
-{
-  HRESULT QueryBlanket(
-    [out] DWORD *pAuthnSvc,
-    [out] DWORD *pAuthzSvc,
-    [out] OLECHAR **pServerPrincName,
-    [out] DWORD *pAuthnLevel,
-    [out] DWORD *pImpLevel,
-    [out] void **pPrivs,
-    [out] DWORD *pCapabilities);
-
-  HRESULT ImpersonateClient();
-
-  HRESULT RevertToSelf();
-
-  BOOL IsImpersonating();
-}
-
-[
-  local,
-  object,
-  uuid(00000024-0000-0000-C000-000000000046)
-]
-interface IAsyncSetup : IUnknown
-{
-  HRESULT GetAsyncManager(
-    [in] REFIID riid,
-    [in] IUnknown *pOuter,
-    [in] DWORD dwFlags,
-    [out] IUnknown **ppInner,
-    [out] IAsyncManager **ppAsyncMgr);
-}
-
-[
-    object,
-    uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
-]
-interface IDirectWriterLock : IUnknown
-{
-    HRESULT WaitForWriteAccess(
-        [in] DWORD dwTimeout);
-
-    HRESULT ReleaseWriteAccess();
-
-    HRESULT HaveWriteAccess();
-}
-
-[
-    object,
-    uuid(00000030-0000-0000-C000-000000000046)
-]
-
-interface ISynchronize : IUnknown
-{
-    HRESULT Wait(
-        [in] DWORD dwFlags,
-        [in] DWORD dwMilliseconds);
-
-    HRESULT Signal();
-
-    HRESULT Reset();
-}
-
-
-[
-    local,
-    object,
-    uuid(00000031-0000-0000-C000-000000000046)
-]
-interface ISynchronizeHandle : IUnknown
-{
-    HRESULT GetHandle(
-        [out] HANDLE *ph);
-}
-
-
-[
-    local,
-    object,
-    uuid(00000032-0000-0000-C000-000000000046)
-]
-interface ISynchronizeEvent : ISynchronizeHandle
-{
-    HRESULT SetEventHandle(
-        [in] HANDLE *ph);
-}
-
-
-[
-    local,
-    object,
-    uuid(00000033-0000-0000-C000-000000000046)
-]
-interface ISynchronizeContainer : IUnknown
-{
-    HRESULT AddSynchronize(
-        [in] ISynchronize *pSync);
-
-    HRESULT WaitMultiple(
-        [in] DWORD dwFlags,
-        [in] DWORD dwTimeOut,
-        [out] ISynchronize **ppSync);
-}
-
-[
-    local,
-    object,
-    uuid(00000025-0000-0000-C000-000000000046)
-]
-interface ISynchronizeMutex : ISynchronize
-{
-    HRESULT ReleaseMutex();
-}
-
-[
-    local,
-    object,
-    uuid(00000029-0000-0000-C000-000000000046)
-]
-
-interface ICancelMethodCalls : IUnknown
-{
-    typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
-
-    HRESULT Cancel(
-        [in] ULONG ulSeconds);
-
-    HRESULT TestCancel();
-}
-
-[
-  local,
-  object,
-  uuid(0000002A-0000-0000-C000-000000000046)
-]
-interface IAsyncManager : IUnknown
-{
-  typedef enum tagDCOM_CALL_STATE {
-    DCOM_NONE          = 0,
-    DCOM_CALL_COMPLETE = 1,
-    DCOM_CALL_CANCELED = 2
-  } DCOM_CALL_STATE;
-
-  HRESULT CompleteCall(
-    [in] HRESULT Result);
-
-  HRESULT GetCallContext(
-    [in] REFIID riid,
-    [out] void **pInterface);
-
-  HRESULT GetState(
-    [out] ULONG *pulStateFlags);
-}
-
-[
-    local,
-    object,
-    uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
-    pointer_default(unique)
-]
-interface ICallFactory : IUnknown
-{
-    HRESULT CreateCall(
-        [in] REFIID riid,
-        [in] IUnknown *pCtrlUnk,
-        [in] REFIID riid2,
-        [out, iid_is(riid2)] IUnknown **ppv);
-}
-
-[
-    local,
-    object,
-    uuid(00000144-0000-0000-C000-000000000046)
-]
-interface IRpcOptions : IUnknown
-{
-    HRESULT Set(
-        [in] IUnknown *pPrx,
-        [in] DWORD dwProperty,
-        [in] ULONG_PTR dwValue);
-
-    HRESULT Query(
-        [in] IUnknown *pPrx,
-        [in] DWORD dwProperty,
-        [out] ULONG_PTR *pdwValue);
-}
-
-enum {
-   COMBND_RPCTIMEOUT = 1,
-   COMBND_SERVER_LOCALITY = 2
-};  
-
-enum {
-   SERVER_LOCALITY_PROCESS_LOCAL = 0,
-   SERVER_LOCALITY_MACHINE_LOCAL = 1,
-   SERVER_LOCALITY_REMOTE = 2
-};
-
-[
-    local,
-    object,
-    uuid(00000149-0000-0000-C000-000000000046),
-    pointer_default(unique)
-]
-interface IRpcHelper : IUnknown
-{
-    HRESULT GetDCOMProtocolVersion(
-        [out] DWORD *pComVersion);
-
-    HRESULT GetIIDFromOBJREF(
-        [in] void *pObjRef,
-        [out] IID **piid);
-}
-
-[
-    local,
-    object,
-    uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
-]
-interface IReleaseMarshalBuffers : IUnknown
-{
-    HRESULT ReleaseMarshalBuffer(
-        [in] RPCOLEMESSAGE *pMsg,
-        [in] DWORD dwFlags,
-        [in, unique] IUnknown *pChnl);
-}
-
-[
-    local,
-    object,
-    uuid(0000002B-0000-0000-C000-000000000046)
-]
-interface IWaitMultiple : IUnknown
-{
-    HRESULT WaitMultiple(
-        [in] DWORD timeout,
-        [out] ISynchronize **pSync);
-    HRESULT AddSynchronize(
-        [in] ISynchronize *pSync);
-}
-
-
-[
-    object,
-    uuid(00000026-0000-0000-C000-000000000046)
-]
-interface IUrlMon : IUnknown
-{
-    HRESULT AsyncGetClassBits(
-        [in] REFCLSID rclsid,
-        [in, unique] LPCWSTR pszTYPE,
-        [in, unique] LPCWSTR pszExt,
-        [in] DWORD dwFileVersionMS,
-        [in] DWORD dwFileVersionLS,
-        [in, unique] LPCWSTR pszCodeBase,
-        [in] IBindCtx *pbc,
-        [in] DWORD dwClassContext,
-        [in] REFIID riid,
-        [in] DWORD flags);
+    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);
 }
 
 [
@@ -2300,87 +1334,6 @@ interface IForegroundTransfer : IUnknown
         [in] void *lpvReserved);
 }
 
-[
-    local,
-    object,
-    uuid(00000147-0000-0000-C000-000000000046)
-]
-interface IAddrTrackingControl : IUnknown
-{
-    typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
-
-    HRESULT EnableCOMDynamicAddrTracking();
-    HRESULT DisableCOMDynamicAddrTracking();
-}
-
-[
-    local,
-    object,
-    uuid(00000148-0000-0000-C000-000000000046)
-]
-interface IAddrExclusionControl : IUnknown
-{
-    typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
-
-    HRESULT GetCurrentAddrExclusionList(
-        [in] REFIID riid,
-        [out, iid_is(riid)] void **ppEnumerator);
-    HRESULT UpdateAddrExclusionList(
-        [in] IUnknown *pEnumerator);
-}
-
-typedef enum _APTTYPE {
-    APTTYPE_CURRENT = -1,
-    APTTYPE_STA     = 0,
-    APTTYPE_MTA     = 1,
-    APTTYPE_NA      = 2,
-    APTTYPE_MAINSTA = 3
-} APTTYPE;
-
-typedef enum _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);
-}
-
 [
     local,
     object,
@@ -2426,40 +1379,6 @@ interface IThumbnailExtractor : IUnknown
         [in] IStorage *pStg);
 }
 
-typedef enum tagGLOBALOPT_PROPERTIES
-{
-    COMGLB_EXCEPTION_HANDLING     = 1,
-    COMGLB_APPID                  = 2,
-    COMGLB_RPC_THREADPOOL_SETTING = 3
-} GLOBALOPT_PROPERTIES;
-
-typedef enum tagGLOBALOPT_EH_VALUES
-{
-    COMGLB_EXCEPTION_HANDLE               = 0,
-    COMGLB_EXCEPTION_DONOT_HANDLE_FATAL   = 1,
-    COMGLB_EXCEPTION_DONOT_HANDLE         = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
-    COMGLB_EXCEPTION_DONOT_HANDLE_ANY     = 2
-} GLOBALOPT_EH_VALUES;
-
-typedef enum tagGLOBALOPT_RPCTP_VALUES
-{
-    COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
-    COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
-} GLOBALOPT_RPCTP_VALUES;
-
-
-[
-    object,
-    local,
-    pointer_default(unique),
-    uuid(0000015B-0000-0000-C000-000000000046)
-]
-interface IGlobalOptions : IUnknown
-{
-    HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value);
-    HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value);
-}
-
 [
     object,
     pointer_default(unique),
@@ -2480,83 +1399,3 @@ interface IApartmentShutdown : IUnknown
 {
     void OnUninitialize([in] UINT64 identifier);
 }
-
-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 */")
diff --git a/include/objidlbase.idl b/include/objidlbase.idl
new file mode 100644
index 00000000000..47602b98d35
--- /dev/null
+++ b/include/objidlbase.idl
@@ -0,0 +1,1198 @@
+/*
+ * 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(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
+} GLOBALOPT_PROPERTIES;
+
+typedef enum tagGLOBALOPT_EH_VALUES
+{
+    COMGLB_EXCEPTION_HANDLE               = 0,
+    COMGLB_EXCEPTION_DONOT_HANDLE_FATAL   = 1,
+    COMGLB_EXCEPTION_DONOT_HANDLE         = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
+    COMGLB_EXCEPTION_DONOT_HANDLE_ANY     = 2
+} GLOBALOPT_EH_VALUES;
+
+typedef enum tagGLOBALOPT_RPCTP_VALUES
+{
+    COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
+    COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
+} GLOBALOPT_RPCTP_VALUES;
+
+
+[
+    object,
+    local,
+    pointer_default(unique),
+    uuid(0000015B-0000-0000-C000-000000000046)
+]
+interface IGlobalOptions : IUnknown
+{
+    HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value);
+    HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value);
+}
+
+cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
+
+typedef DWORD CPFLAGS;
+
+typedef struct tagContextProperty
+{
+    GUID policyId;
+    CPFLAGS flags;
+    [unique] IUnknown *pUnk;
+} ContextProperty;
+
+[
+    local,
+    object,
+    uuid(000001c1-0000-0000-C000-000000000046)
+]
+interface IEnumContextProps : IUnknown
+{
+    typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
+
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+        [in] ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumContextProps **ppEnumContextProps);
+
+    HRESULT Count(
+        [out] ULONG *pcelt);
+}
+
+[
+    local,
+    object,
+    uuid(000001c0-0000-0000-C000-000000000046)
+]
+interface IContext : IUnknown
+{
+    HRESULT SetProperty(
+        [in] REFGUID policyId,
+        [in] CPFLAGS flags,
+        [in] IUnknown *pUnk);
+
+    HRESULT RemoveProperty(
+        [in] REFGUID policyId);
+
+    HRESULT GetProperty(
+        [in] REFGUID guid,
+        [out] CPFLAGS *pFlags,
+        [out] IUnknown **ppUnk);
+
+    HRESULT EnumContextProps(
+        [out] IEnumContextProps **ppEnumContextProps);
+}
+
+[
+    local,
+    object,
+    uuid(000001c6-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IObjContext : IContext
+{
+    void Reserved1();
+    void Reserved2();
+    void Reserved3();
+    void Reserved4();
+    void Reserved5();
+    void Reserved6();
+    void Reserved7();
+}
+
+cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")
+cpp_quote("#endif /* defined _OBJIDLBASE_ */")
-- 
2.28.0




More information about the wine-devel mailing list