summaryrefslogtreecommitdiffstats
path: root/private/ole32/com/dcomidl
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ole32/com/dcomidl
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ole32/com/dcomidl')
-rw-r--r--private/ole32/com/dcomidl/daytona/makefile10
-rw-r--r--private/ole32/com/dcomidl/daytona/makefile.inc4
-rw-r--r--private/ole32/com/dcomidl/daytona/sources69
-rw-r--r--private/ole32/com/dcomidl/dirs37
-rw-r--r--private/ole32/com/dcomidl/dscm.idl126
-rw-r--r--private/ole32/com/dcomidl/empty.cxx5
-rw-r--r--private/ole32/com/dcomidl/filelist.mk90
-rw-r--r--private/ole32/com/dcomidl/getif.idl44
-rw-r--r--private/ole32/com/dcomidl/host.idl33
-rw-r--r--private/ole32/com/dcomidl/irot.acf24
-rw-r--r--private/ole32/com/dcomidl/irot.idl108
-rw-r--r--private/ole32/com/dcomidl/makefil014
-rw-r--r--private/ole32/com/dcomidl/makefile27
-rw-r--r--private/ole32/com/dcomidl/makeidl.inc117
-rw-r--r--private/ole32/com/dcomidl/multqi.idl49
-rw-r--r--private/ole32/com/dcomidl/objsrv.acf17
-rw-r--r--private/ole32/com/dcomidl/objsrv.idl85
-rw-r--r--private/ole32/com/dcomidl/oleprv.h17
-rw-r--r--private/ole32/com/dcomidl/oleprv.idl19
-rw-r--r--private/ole32/com/dcomidl/scm.acf20
-rw-r--r--private/ole32/com/dcomidl/scm.idl119
-rw-r--r--private/ole32/com/dcomidl/sources.inc3
22 files changed, 1037 insertions, 0 deletions
diff --git a/private/ole32/com/dcomidl/daytona/makefile b/private/ole32/com/dcomidl/daytona/makefile
new file mode 100644
index 000000000..1d3728d41
--- /dev/null
+++ b/private/ole32/com/dcomidl/daytona/makefile
@@ -0,0 +1,10 @@
+############################################################################
+#
+# Copyright (C) 1992, Microsoft Corporation.
+#
+# All rights reserved.
+#
+############################################################################
+
+!include $(NTMAKEENV)\makefile.def
+
diff --git a/private/ole32/com/dcomidl/daytona/makefile.inc b/private/ole32/com/dcomidl/daytona/makefile.inc
new file mode 100644
index 000000000..c41aa3fa2
--- /dev/null
+++ b/private/ole32/com/dcomidl/daytona/makefile.inc
@@ -0,0 +1,4 @@
+#just use a common makeidl.inc for all platforms
+DEST_TREE=daytona
+
+!include ..\makeidl.inc
diff --git a/private/ole32/com/dcomidl/daytona/sources b/private/ole32/com/dcomidl/daytona/sources
new file mode 100644
index 000000000..2c3cb17ed
--- /dev/null
+++ b/private/ole32/com/dcomidl/daytona/sources
@@ -0,0 +1,69 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ sources.
+
+Abstract:
+
+ This file specifies the target component being built and the list of
+ sources files needed to build that component. Also specifies optional
+ compiler switches and libraries that are unique for the component being
+ built.
+
+
+Author:
+
+ Donna Liu (DonnaLi) 19-Dec-1993
+
+!ENDIF
+
+
+MAJORCOMP = cairole
+MINORCOMP = com
+
+!include ..\..\..\daytona.inc
+
+#
+# This is the name of the target built from the source files specified
+# below. The name should include neither the path nor the file extension.
+#
+
+TARGETNAME= idl
+
+#
+# This specifies where the target is to be built. A private target of
+# type LIBRARY or DYNLINK should go to obj, whereas a public target of
+# type LIBRARY or DYNLINK should go to $(BASEDIR)\public\sdk\lib.
+#
+
+TARGETPATH= obj
+
+#
+# This specifies the type of the target, such as PROGRAM, DYNLINK, LIBRARY,
+# etc.
+#
+
+TARGETTYPE= LIBRARY
+
+INCLUDES= ..\..\..\common\daytona;..\..\..\ih;..;
+INCLUDES= $(INCLUDES);$(BASEDIR)\public\sdk\inc;
+
+C_DEFINES= \
+ $(C_DEFINES) \
+ -I$(BASEDIR)\private\dcomidl
+
+SOURCES= \
+ ..\empty.cxx
+
+UMTYPE= windows
+UMAPPL=
+UMTEST=
+UMLIBS=
+
+NTTARGETFILE0=allidl
+
+!include ..\sources.inc
+SYNCHRONIZE_BLOCK=1
diff --git a/private/ole32/com/dcomidl/dirs b/private/ole32/com/dcomidl/dirs
new file mode 100644
index 000000000..80cd267ad
--- /dev/null
+++ b/private/ole32/com/dcomidl/dirs
@@ -0,0 +1,37 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ dirs.
+
+Abstract:
+
+ This file specifies the subdirectories of the current directory that
+ contain component makefiles.
+
+
+Author:
+
+ Donna Liu (DonnaLi) 19-Dec-1993
+
+!ENDIF
+
+#
+# This is a list of all subdirectories that build required components.
+# Each subdirectory name should appear on a line by itself. The build
+# follows the order in which the subdirectories are specified.
+#
+
+DIRS=
+
+#
+# This is a list of all subdirectories that build optional components.
+# Each subdirectory name should appear on a line by itself. The build
+# follows the order in which the subdirectories are specified.
+#
+
+OPTIONAL_DIRS= \
+ daytona \
+
diff --git a/private/ole32/com/dcomidl/dscm.idl b/private/ole32/com/dcomidl/dscm.idl
new file mode 100644
index 000000000..6eb99a90f
--- /dev/null
+++ b/private/ole32/com/dcomidl/dscm.idl
@@ -0,0 +1,126 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1995.
+//
+// File:
+// dscm.idl
+//
+// Contents:
+// Definition of private COM interface between ole32.dll
+// and the SCM.
+//
+// History:
+//
+//--------------------------------------------------------------------------
+[
+ uuid(00000136-0000-0000-C000-000000000046),
+ version(0.0),
+ pointer_default(unique)
+#ifndef RAW
+ ,object
+#endif
+]
+
+interface IDSCM
+#ifndef RAW
+ : IUnknown
+#endif
+{
+#ifndef DO_NO_IMPORTS
+ import "iface.idl";
+ import "wtypes.idl";
+ import "objidl.idl";
+ import "obase.idl";
+#endif
+ #include "comhndl.h"
+
+ COM_DEFINES(IDSCM)
+
+ //
+ // Clsid - CLSID to activate
+ // pServerInfo - Location/Security info specified by client
+ // pwszWinstaDesktop- Client's winsta\desktop
+ // ClsContext - Class context requested
+ // ProcessSignature - Client's process reference for rpcss
+ // bDynamicSecurity - Client's winsta\desktop and id should not be cached
+ //
+ typedef struct _ACTIVATION_INFO
+ {
+ const GUID * Clsid;
+ COSERVERINFO * pServerInfo;
+ [string] WCHAR *pwszWinstaDesktop;
+ DWORD ClsContext;
+ DWORD ProcessSignature;
+ BOOL bDynamicSecurity;
+ } ACTIVATION_INFO;
+
+ HRESULT SCMGetClassObject(
+ COM_HANDLE
+ [in] ACTIVATION_INFO * pActivationInfo,
+ [in] IID * pIID,
+
+ //
+ // OR piggyback of ClientResolveOXID.
+ //
+ [in] long Apartment,
+ [out] OXID * pOxidServer,
+ [out] DUALSTRINGARRAY ** ppServerORBindings,
+ [out] OXID_INFO * pOxidInfo,
+ [out] MID * pLocalMidOfRemote,
+
+ // ClassFactory interface data.
+ [out] MInterfacePointer ** ppIDClassFactory
+ );
+
+ HRESULT SCMCreateInstance(
+ COM_HANDLE
+ [in] ACTIVATION_INFO * pActivationInfo,
+
+ [in] DWORD Interfaces,
+ [in,size_is(Interfaces)] IID * pIIDs,
+
+ //
+ // OR piggyback of ClientResolveOXID.
+ //
+ [in] long Apartment,
+ [out] OXID * pOxidServer,
+ [out] DUALSTRINGARRAY ** ppServerORBindings,
+
+ [out] OXID_INFO * pOxidInfo,
+ [out] MID * pLocalMidOfRemote,
+
+ // Interface data and results.
+ [out,size_is(Interfaces)] MInterfacePointer ** ppInterfaceData,
+ [out,size_is(Interfaces)] HRESULT * pResults
+ );
+
+ HRESULT SCMGetPersistentInstance(
+ COM_HANDLE
+ [in] ACTIVATION_INFO * pActivationInfo,
+
+ [in, string, unique] WCHAR * pwszPath,
+ [in, unique] MInterfacePointer *pIFDStorage,
+ [in] DWORD FileMode,
+ [in] BOOL FileWasOpened,
+
+ [in] DWORD Interfaces,
+ [in,size_is(Interfaces)] IID * pIIDs,
+
+ //
+ // OR piggyback of ClientResolveOXID.
+ //
+ [in] long Apartment,
+ [out] OXID * pOxidServer,
+ [out] DUALSTRINGARRAY ** ppServerORBindings,
+
+ [out] OXID_INFO * pOxidInfo,
+ [out] MID * pLocalMidOfRemote,
+
+ // Interface data and results.
+ [out] BOOL * pFoundInROT,
+ [out,size_is(Interfaces)] MInterfacePointer ** ppInterfaceData,
+ [out,size_is(Interfaces)] HRESULT * pResults
+ );
+}
+
diff --git a/private/ole32/com/dcomidl/empty.cxx b/private/ole32/com/dcomidl/empty.cxx
new file mode 100644
index 000000000..3f2ff2d6c
--- /dev/null
+++ b/private/ole32/com/dcomidl/empty.cxx
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/private/ole32/com/dcomidl/filelist.mk b/private/ole32/com/dcomidl/filelist.mk
new file mode 100644
index 000000000..99ae875f5
--- /dev/null
+++ b/private/ole32/com/dcomidl/filelist.mk
@@ -0,0 +1,90 @@
+############################################################################
+#
+# Copyright (C) 1992, Microsoft Corporation.
+#
+# All rights reserved.
+#
+############################################################################
+
+
+#
+# Name of target. Include an extension (.dll, .lib, .exe)
+# If the target is part of the release, set RELEASE to 1.
+#
+
+
+#
+# Source files. Remember to prefix each name with .\
+#
+
+CXXFILES =
+
+IDLFILES = \
+ .\drot.idl \
+ .\getif.idl \
+ .\ichnl.idl \
+ .\iface.idl \
+ .\objsrv.idl \
+ .\osrot.idl \
+ .\scm.idl \
+
+IDLUSE = SSWITCH
+
+CFILES = \
+ .\drot_c.c \
+ .\drot_x.c \
+ .\drot_s.c \
+ .\drot_y.c \
+ .\drot_z.c \
+ .\getif_c.c \
+ .\getif_x.c \
+ .\getif_s.c \
+ .\getif_y.c \
+ .\getif_z.c \
+ .\ichnl_c.c \
+ .\ichnl_x.c \
+ .\ichnl_s.c \
+ .\ichnl_y.c \
+ .\ichnl_z.c \
+ .\objsrv_c.c \
+ .\objsrv_x.c \
+ .\objsrv_s.c \
+ .\objsrv_y.c \
+ .\objsrv_z.c \
+ .\osrot_c.c \
+ .\osrot_x.c \
+ .\osrot_s.c \
+ .\osrot_y.c \
+ .\osrot_z.c \
+ .\scm_c.c \
+ .\scm_x.c \
+ .\scm_s.c \
+ .\scm_y.c \
+ .\scm_z.c \
+
+RCFILES =
+
+
+#
+# Libraries and other object files to link.
+#
+
+DEFFILE =
+
+LIBS =
+
+OBJFILES =
+
+#
+# Precompiled headers.
+#
+
+PXXFILE =
+PFILE =
+
+
+CINC = $(CINC) -I$(CARIOLE)\h -I$(COMMON)\types
+
+MTHREAD = 1
+
+MULTIDEPEND = MERGED
diff --git a/private/ole32/com/dcomidl/getif.idl b/private/ole32/com/dcomidl/getif.idl
new file mode 100644
index 000000000..f0ee5246e
--- /dev/null
+++ b/private/ole32/com/dcomidl/getif.idl
@@ -0,0 +1,44 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: getif.idl
+//
+// Contents: Definition of private RPC interface to an Object Server
+// to get an interface attached to a window.
+//
+// History: 29-Dec-93 Ricksa Created
+//
+//--------------------------------------------------------------------------
+[ uuid(00000135-0000-0000-C000-000000000046),
+ version(0.0),
+ pointer_default(unique),
+ object
+]
+
+interface IInterfaceFromWindowProp : IUnknown
+{
+#ifndef DO_NO_IMPORTS
+ import "iface.idl";
+ import "unknwn.idl";
+ import "objidl.idl";
+#endif
+
+ HRESULT GetInterfaceFromWindowProp(
+ [in] DWORD hWnd,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppunk,
+ [in, string] WCHAR *pwszPropertyName );
+
+ HRESULT PrivDragDrop(
+ [in] DWORD hWnd,
+ [in, unique] InterfaceData *pIFDDataObject,
+ [in] DWORD dop,
+ [in] DWORD grfKeyState,
+ [in] POINTL pt,
+ [in, out, unique] DWORD *pdwEffect,
+ [in] DWORD dwSmId,
+ [in] IDataObject *pRealDataObject,
+ [in] DWORD hwndSource );
+}
diff --git a/private/ole32/com/dcomidl/host.idl b/private/ole32/com/dcomidl/host.idl
new file mode 100644
index 000000000..2b34d5227
--- /dev/null
+++ b/private/ole32/com/dcomidl/host.idl
@@ -0,0 +1,33 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: host.idl
+//
+// Contents: Definition of private ORPC interface between apartments.
+// Used to activate an inproc dll of one threading model from
+// an apartment of a different threading model.
+//
+// History: 04-Mar-96 Rickhi Created
+//
+//--------------------------------------------------------------------------
+[ uuid(00000141-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ object
+]
+
+interface IDLLHost : IUnknown
+{
+#ifndef DO_NO_IMPORTS
+ import "iface.idl";
+ import "unknwn.idl";
+ import "objidl.idl";
+#endif
+
+ HRESULT DllGetClassObject(
+ [in] DWORD pfnGetClassObject,
+ [in] REFCLSID rclsid,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppunk);
+}
diff --git a/private/ole32/com/dcomidl/irot.acf b/private/ole32/com/dcomidl/irot.acf
new file mode 100644
index 000000000..a48103248
--- /dev/null
+++ b/private/ole32/com/dcomidl/irot.acf
@@ -0,0 +1,24 @@
+[ implicit_handle(handle_t any_handle) ] interface IROT
+
+{
+ IrotRegister(
+ [comm_status, fault_status] prpcstat);
+
+ IrotRevoke(
+ [comm_status, fault_status] prpcstat);
+
+ IrotIsRunning(
+ [comm_status, fault_status] prpcstat);
+
+ IrotGetObject(
+ [comm_status, fault_status] prpcstat);
+
+ IrotNoteChangeTime(
+ [comm_status, fault_status] prpcstat);
+
+ IrotGetTimeOfLastChange(
+ [comm_status, fault_status] prpcstat);
+
+ IrotEnumRunning(
+ [comm_status, fault_status] prpcstat);
+}
diff --git a/private/ole32/com/dcomidl/irot.idl b/private/ole32/com/dcomidl/irot.idl
new file mode 100644
index 000000000..3b2a0a86d
--- /dev/null
+++ b/private/ole32/com/dcomidl/irot.idl
@@ -0,0 +1,108 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: irot.idl
+//
+// Contents: Definition of private RPC interface between compobj.dll
+// and the SCM that implements the ROT.
+//
+// History: 20-Jan-95 Ricksa Created
+//
+//--------------------------------------------------------------------------
+[ uuid(B9E79E60-3D52-11CE-AAA1-00006901293F),
+ version(0.2),
+ pointer_default(unique) ]
+
+interface IROT
+{
+ import "iface.idl";
+
+#pragma midl_echo(" ")
+#pragma midl_echo("//------------------------")
+#pragma midl_echo("// Invalid Key for SCM Reg")
+#pragma midl_echo("//------------------------")
+#pragma midl_echo("#define SCMREG_INVALID_ENTRY_LOC 0xFFFFFFFF")
+#pragma midl_echo(" ")
+
+ typedef [context_handle] void *PHPROCESS;
+
+ typedef struct _SCMREGKEY
+ {
+ DWORD dwEntryLoc;
+ DWORD dwScmId;
+ } SCMREGKEY;
+
+ typedef struct _MnkEqBuf
+ {
+ DWORD cdwSize;
+ [size_is(cdwSize)]
+ BYTE abEqData[];
+ } MNKEQBUF;
+
+ typedef struct _MkInterfaceList
+ {
+ DWORD dwSize;
+ [size_is(dwSize)]
+ InterfaceData *apIFDList[];
+ } MkInterfaceList;
+
+ HRESULT IrotRegister(
+ [in] handle_t hRpc,
+ [in] PHPROCESS phProcess,
+ [in,unique,string] WCHAR *pwszWinstaDesktop,
+ [in] MNKEQBUF *pmkeqbuf,
+ [in] InterfaceData *pifdObject,
+ [in] InterfaceData *pifdObjectName,
+ [in] FILETIME *pfiletime,
+ [in] DWORD dwProcessId,
+ [in,unique,string] WCHAR *pwszServerExe,
+ [out] SCMREGKEY *psrkRegister,
+ [out] error_status_t *prpcstat);
+
+ HRESULT IrotRevoke(
+ [in] handle_t hRpc,
+ [in] SCMREGKEY *psrkRegister,
+ [in] BOOL fServerRevoke,
+ [out] InterfaceData **pifdObject,
+ [out] InterfaceData **pifdName,
+ [out] error_status_t *prpcstat);
+
+ HRESULT IrotIsRunning(
+ [in] handle_t hRpc,
+ [in] PHPROCESS phProcess,
+ [in,unique,string] WCHAR *pwszWinstaDesktop,
+ [in] MNKEQBUF *pmkeqbuf);
+
+ HRESULT IrotGetObject(
+ [in] handle_t hRpc,
+ [in] PHPROCESS phProcess,
+ [in,unique,string] WCHAR *pwszWinstaDesktop,
+ [in] DWORD dwProcessId,
+ [in] MNKEQBUF *pmkeqbuf,
+ [out] SCMREGKEY *psrkRegister,
+ [out] InterfaceData **pifdObject,
+ [out] error_status_t *prpcstat);
+
+ HRESULT IrotNoteChangeTime(
+ [in] handle_t hRpc,
+ [in] SCMREGKEY *psrkRegister,
+ [in] FILETIME *pfiletime,
+ [out] error_status_t *prpcstat);
+
+ HRESULT IrotGetTimeOfLastChange(
+ [in] handle_t hRpc,
+ [in] PHPROCESS phProcess,
+ [in,unique,string] WCHAR *pwszWinstaDesktop,
+ [in] MNKEQBUF *pmkeqbuf,
+ [out] FILETIME *pfiletime,
+ [out] error_status_t *prpcstat);
+
+ HRESULT IrotEnumRunning(
+ [in] handle_t hRpc,
+ [in] PHPROCESS phProcess,
+ [in,unique,string] WCHAR *pwszWinstaDesktop,
+ [out] MkInterfaceList **ppMkIFList,
+ [out] error_status_t *prpcstat);
+}
diff --git a/private/ole32/com/dcomidl/makefil0 b/private/ole32/com/dcomidl/makefil0
new file mode 100644
index 000000000..825d0b6b1
--- /dev/null
+++ b/private/ole32/com/dcomidl/makefil0
@@ -0,0 +1,14 @@
+!include $(NTMAKEENV)\makefile.plt
+!include dirs
+
+DIR=$(DIRS) $(OPTIONAL_DIRS)
+
+all:
+!IF "$(BUILDMSG)" != ""
+ @ech ; $(BUILDMSG) ;
+!ENDIF
+
+clean: cleansrc all
+
+cleansrc:
+ for %%i in ($(DIR)) do cd %i & nmake -nologo BUILDMSG= clean -f makefile.inc & cd $(MAKEDIR)
diff --git a/private/ole32/com/dcomidl/makefile b/private/ole32/com/dcomidl/makefile
new file mode 100644
index 000000000..7cbed0c04
--- /dev/null
+++ b/private/ole32/com/dcomidl/makefile
@@ -0,0 +1,27 @@
+############################################################################
+#
+# Copyright (C) 1992, Microsoft Corporation.
+#
+# All rights reserved.
+#
+############################################################################
+
+!ifdef NTMAKEENV
+
+# We need to do the following so that build will stop reading from the
+# pipe.
+
+all :
+ echo $(BUILDMSG)
+
+clean : all
+
+!else # NTMAKEENV
+
+!include $(CAIROLE)\com\makefile
+
+all: $(OBJS)
+
+!include $(DEPENDFILE)
+
+!endif # NTMAKEENV
diff --git a/private/ole32/com/dcomidl/makeidl.inc b/private/ole32/com/dcomidl/makeidl.inc
new file mode 100644
index 000000000..dd14ac67e
--- /dev/null
+++ b/private/ole32/com/dcomidl/makeidl.inc
@@ -0,0 +1,117 @@
+# DEST_TREE is set by the calling makefile
+
+CLASS_DEST=..\..\class\$(DEST_TREE)
+SCM_DEST=..\..\..\dcomss\olescm\$(DEST_TREE)
+
+
+
+
+!ifndef MIDL
+MIDL = midl.exe
+!endif
+
+MIDL_FLAGS= \
+ -Zp8 \
+ -I$(INCLUDES) \
+ -Oi2 \
+ -oldnames \
+ -char unsigned \
+ -error allocation \
+ -error stub_data \
+ -ms_ext -c_ext \
+ $(C_DEFINES) \
+ -cpp_cmd $(TARGET_CPP)
+
+CSWITCH=-prefix cstub _
+
+irot.h: ..\irot.idl ..\irot.acf
+ $(MIDL) $(MIDL_FLAGS) \
+ -cstub $(CLASS_DEST)\irot_c.c \
+ -sstub $(SCM_DEST)\irot_s.c \
+ ..\irot.idl
+
+# Only generate a header. The object proxy and stub are made with
+# mega.idl
+getif.h: ..\getif.idl
+ $(MIDL) $(MIDL_FLAGS) \
+ -client none \
+ -server none \
+ -iid $(CLASS_DEST)\getif_i.c \
+ ..\getif.idl
+
+# Only generate a header. The object proxy and stub are made with
+# mega.idl
+host.h: ..\host.idl
+ $(MIDL) $(MIDL_FLAGS) \
+ -client none \
+ -server none \
+ -iid $(CLASS_DEST)\host_i.c \
+ ..\host.idl
+
+# Only generate a header.
+multqi.h: ..\multqi.idl
+ $(MIDL) $(MIDL_FLAGS) \
+ -client none \
+ -server none \
+ ..\multqi.idl
+
+# first MIDL invocation makes the object header
+# the object proxy and stub are made with mega.idl
+# second MIDL invocation makes the server and the '_' prefixed client
+objsrv.h rwobjsrv.h: ..\objsrv.idl ..\objsrv.acf
+ $(MIDL) $(MIDL_FLAGS) \
+ -client none \
+ -server none \
+ ..\objsrv.idl
+
+ $(MIDL) $(MIDL_FLAGS) \
+ -cstub $(SCM_DEST)\objsrv_c.c \
+ -server none \
+ -header rwobjsrv.h \
+ -D RAW \
+ ..\objsrv.idl
+
+# first MIDL invocation makes proxy for ole32.dll
+# second MIDL invocation makes the server and the '_' prefixed client
+scm.h: ..\scm.idl ..\scm.acf
+ $(MIDL) $(MIDL_FLAGS) \
+ -cstub $(CLASS_DEST)\scm_c.c \
+ -server none \
+ ..\scm.idl
+
+ $(MIDL) $(MIDL_FLAGS) \
+ $(CSWITCH) \
+ -cstub $(SCM_DEST)\scm_z.c \
+ -sstub $(SCM_DEST)\scm_s.c \
+ -noheader \
+ ..\scm.idl
+
+# first MIDL invocation makes the object header
+# the object proxy and stub are made with mega.idl
+# second MIDL invocation makes the server
+dscm.h rawdscm.h: ..\dscm.idl
+ $(MIDL) $(MIDL_FLAGS) \
+ -client none \
+ -server none \
+ -iid $(CLASS_DEST)\dscm_i.c \
+ ..\dscm.idl
+
+ $(MIDL) $(MIDL_FLAGS) \
+ $(CSWITCH) \
+ -client none \
+ -sstub $(SCM_DEST)\dscm_s.c \
+ -header rawdscm.h \
+ -D RAW \
+ ..\dscm.idl
+
+allidl: irot.h getif.h host.h objsrv.h rwobjsrv.h scm.h dscm.h rawdscm.h multqi.h
+
+clean:
+ -erase multqi.h >NUL 2>NUL
+ -erase irot.h >NUL 2>NUL
+ -erase getif.h >NUL 2>NUL
+ -erase objsrv.h >NUL 2>NUL
+ -erase rwobjsrv.h >NUL 2>NUL
+ -erase scm.h >NUL 2>NUL
+ -erase rawdscm.h >NUL 2>NUL
+ -erase host.h >NUL 2>NUL
diff --git a/private/ole32/com/dcomidl/multqi.idl b/private/ole32/com/dcomidl/multqi.idl
new file mode 100644
index 000000000..f3e8cbcf3
--- /dev/null
+++ b/private/ole32/com/dcomidl/multqi.idl
@@ -0,0 +1,49 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: multiqi.idl
+//
+// Contents: Definition of types for supporting multiple QI's at a time
+//
+// History: 07-Aug-95 GregJen Created
+//
+//--------------------------------------------------------------------------
+
+[ local,
+ pointer_default(unique)
+]
+
+interface MultiQiTypes
+{
+
+#ifndef DO_NO_IMPORTS
+ import "iface.idl";
+ import "objidl.idl";
+ import "obase.idl";
+#endif
+
+typedef struct _InterfaceInfo {
+ IID * pIID;
+ HRESULT hr;
+
+// the RAW form does not do Co{Un}Marshal calls
+#ifdef RAW
+ MInterfacePointer *
+#else
+ [iid_is(pIID)] IUnknown *
+#endif
+ pIF;
+ } InterfaceInfoBlock;
+
+
+typedef struct _rawInterfaceInfo {
+ IID * pIID;
+ HRESULT hr;
+
+ MInterfacePointer * pIF;
+
+ } RawInterfaceInfoBlock;
+}
+ \ No newline at end of file
diff --git a/private/ole32/com/dcomidl/objsrv.acf b/private/ole32/com/dcomidl/objsrv.acf
new file mode 100644
index 000000000..cad32f329
--- /dev/null
+++ b/private/ole32/com/dcomidl/objsrv.acf
@@ -0,0 +1,17 @@
+[ implicit_handle(handle_t any_handle) ] interface IObjServer
+{
+#ifdef RAW
+ ObjectServerGetClassObject(
+ [comm_status, fault_status] pStatus);
+
+ ObjectServerCreateInstance(
+ [comm_status, fault_status] pStatus);
+
+ ObjectServerGetInstance(
+ [comm_status, fault_status] pStatus);
+
+ ObjectServerLoadDll(
+ [comm_status, fault_status] pStatus);
+#endif
+}
+ \ No newline at end of file
diff --git a/private/ole32/com/dcomidl/objsrv.idl b/private/ole32/com/dcomidl/objsrv.idl
new file mode 100644
index 000000000..d8f0ef86d
--- /dev/null
+++ b/private/ole32/com/dcomidl/objsrv.idl
@@ -0,0 +1,85 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: scm.idl
+//
+// Contents: Definition of private RPC interface between compobj.dll
+// and the service controller.
+//
+// History: 21-Apr-93 Ricksa Created
+//
+//--------------------------------------------------------------------------
+
+[ uuid(00000132-0000-0000-C000-000000000046),
+ version(0.0),
+ pointer_default(unique)
+#ifndef RAW
+ , object
+#endif
+]
+
+interface IObjServer
+#ifndef RAW
+ : IUnknown
+#endif
+{
+#ifndef DO_NO_IMPORTS
+ import "iface.idl";
+ import "obase.idl";
+#endif
+ #include "comhndl.h"
+
+ COM_DEFINES(IObjServer)
+
+#ifdef RAW
+ typedef error_status_t STATUSTYPE;
+#else
+ typedef DWORD STATUSTYPE;
+#endif
+
+ HRESULT ObjectServerGetClassObject(
+ COM_HANDLE
+ [in] const GUID * rclsid,
+ [in] IID * pIID,
+ [in] BOOL fSurrogate,
+ [out] MInterfacePointer ** ppIFD,
+ [out] STATUSTYPE * pStatus
+ );
+
+ HRESULT ObjectServerCreateInstance(
+ COM_HANDLE
+ [in] const GUID * rclsid,
+ [in] DWORD Interfaces,
+ [in,size_is(Interfaces)] IID * pIIDs,
+ [out,size_is(Interfaces)] MInterfacePointer **ppIFD,
+ [out,size_is(Interfaces)] HRESULT * pResults,
+ [out] STATUSTYPE * pStatus
+ );
+
+ HRESULT ObjectServerGetInstance(
+ COM_HANDLE
+ [in] const GUID * rclsid,
+ [in] DWORD Mode,
+ [in, string, unique] WCHAR * pwszPath,
+ [in, unique] MInterfacePointer * pIFDStorage,
+ [in] DWORD Interfaces,
+ [in,size_is(Interfaces)] IID * pIIDs,
+ [in, unique] MInterfacePointer * pIFDROT,
+ [out,size_is(Interfaces)] MInterfacePointer **ppIFD,
+ [out,size_is(Interfaces)] HRESULT * pResults,
+ [out] STATUSTYPE * pStatus
+ );
+
+ HRESULT ObjectServerLoadDll(
+ COM_HANDLE
+ [in] const GUID * rclsid,
+ [out] STATUSTYPE * pStatus);
+}
+
+
+
+
+
+
diff --git a/private/ole32/com/dcomidl/oleprv.h b/private/ole32/com/dcomidl/oleprv.h
new file mode 100644
index 000000000..1003b91bc
--- /dev/null
+++ b/private/ole32/com/dcomidl/oleprv.h
@@ -0,0 +1,17 @@
+
+// oleprv.h - header files matching those needed by oleprv.idl
+//
+
+// internal interfaces used by DCOM
+// this is private! (for now)
+
+// NOTE: as entries are added to oleprv.idl, corresponding entries should
+// be added here
+
+#include "remunk.h"
+#include "multqi.h"
+#include "objsrv.h"
+#include "dscm.h"
+#include "getif.h"
+#include "odeth.h"
+#include "host.h"
diff --git a/private/ole32/com/dcomidl/oleprv.idl b/private/ole32/com/dcomidl/oleprv.idl
new file mode 100644
index 000000000..ea5e0705a
--- /dev/null
+++ b/private/ole32/com/dcomidl/oleprv.idl
@@ -0,0 +1,19 @@
+// oleprv.idl
+
+// internal interfaces used by DCOM that need object-style proxies
+// this file is pulled into mega.idl in the oleprx32 subtree
+
+// NOTE: when you add an idl to here, make sure to add it to the corresponding
+// place in the file oleprv.h
+
+
+
+#include "obase.idl"
+#include "iface.idl"
+#include "multqi.idl"
+#include "remunk.idl"
+#include "objsrv.idl"
+#include "dscm.idl"
+#include "getif.idl"
+#include "odeth.idl"
+#include "host.idl"
diff --git a/private/ole32/com/dcomidl/scm.acf b/private/ole32/com/dcomidl/scm.acf
new file mode 100644
index 000000000..5c74b7afd
--- /dev/null
+++ b/private/ole32/com/dcomidl/scm.acf
@@ -0,0 +1,20 @@
+[ implicit_handle(handle_t any_handle) ] interface ISCM
+{
+ ServerRegisterClsid(
+ [comm_status, fault_status] prpcstat);
+
+ ServerRevokeClsid(
+ [comm_status, fault_status] prpcstat);
+
+ GetThreadID(
+ [comm_status, fault_status] prpcstat);
+
+ UpdateShrdTbls(
+ [comm_status, fault_status] prpcstat);
+
+ RegisterWindowPropInterface(
+ [comm_status, fault_status] prpcstat);
+
+ GetWindowPropInterface(
+ [comm_status, fault_status] prpcstat);
+}
diff --git a/private/ole32/com/dcomidl/scm.idl b/private/ole32/com/dcomidl/scm.idl
new file mode 100644
index 000000000..264a13dc3
--- /dev/null
+++ b/private/ole32/com/dcomidl/scm.idl
@@ -0,0 +1,119 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: scm.idl
+//
+// Contents: Definition of private RPC interface between compobj.dll
+// and the service controller.
+//
+// History: 21-Apr-93 Ricksa Created
+// 27-Dec-93 ErikGav TCHAR->WCHAR
+//
+//--------------------------------------------------------------------------
+[ uuid(412f241e-c12a-11ce-abff-0020af6e7a17),
+ version(0.2),
+ pointer_default(unique)
+]
+
+interface ISCM
+{
+ import "iface.idl";
+ import "obase.idl";
+
+ typedef [context_handle] void *PHPROCESS;
+
+ typedef struct _RegOutputEnt
+ {
+ DWORD dwReg;
+ DWORD dwAtStorage;
+ } RegOutputEnt;
+
+ typedef struct _RegOutput
+ {
+ DWORD dwSize;
+ [size_is(dwSize)]
+ RegOutputEnt regoutent[];
+ } RegOutput;
+
+ typedef struct _RegInputEntry
+ {
+ CLSID clsid;
+ OXID oxid;
+ IPID ipid;
+ DWORD dwFlags;
+ } RegInputEntry;
+
+ typedef struct _RegInput
+ {
+ DWORD dwSize;
+ [size_is(dwSize)]
+ RegInputEntry rginent[];
+ } RegInput;
+
+ typedef struct _RevokeEntry
+ {
+ CLSID clsid;
+ DWORD dwReg;
+ } RevokeEntry;
+
+ typedef struct _RevokeClasses
+ {
+ DWORD dwSize;
+ [size_is(dwSize)]
+ RevokeEntry revent[];
+ } RevokeClasses;
+
+ //
+ // Server to SCM methods.
+ //
+ HRESULT ServerRegisterClsid(
+ [in] handle_t hRpc,
+ [in] PHPROCESS phProcess,
+ [in, string, unique] WCHAR *pWinstaDesktop,
+ [in] RegInput * pregin,
+ [out] RegOutput ** ppregout,
+ [out] error_status_t * prpcstat);
+
+ void ServerRevokeClsid(
+ [in] handle_t hRpc,
+ [in] PHPROCESS phProcess,
+ [in] RevokeClasses * prevcls,
+ [out] error_status_t * prpcstat);
+
+ //
+ // Client/Server to SCM methods.
+ //
+
+ void GetThreadID(
+ [in] handle_t hRpc,
+ [out] DWORD * pThreadID,
+ [out] error_status_t *prpcstat);
+
+ HRESULT UpdateShrdTbls(
+ [in] handle_t hRpc,
+ [out] error_status_t *prpcstat);
+
+ void UpdateActivationSettings(
+ [in] handle_t hRpc,
+ [out] error_status_t *prpcstat);
+
+ // Register Drag/Drop
+ HRESULT RegisterWindowPropInterface(
+ [in] handle_t hRpc,
+ [in] DWORD hWnd,
+ [in] STDOBJREF *pStd,
+ [in] OXID_INFO *pOxidInfo,
+ [out] DWORD *pdwCookie,
+ [out] error_status_t *prpcstat);
+
+ HRESULT GetWindowPropInterface(
+ [in] handle_t hRpc,
+ [in] DWORD hWnd,
+ [in] DWORD dwCookie,
+ [in] BOOL fRevoke,
+ [out] STDOBJREF *pStd,
+ [out] OXID_INFO *pOxidInfo,
+ [out] error_status_t *prpcstat);
+}
diff --git a/private/ole32/com/dcomidl/sources.inc b/private/ole32/com/dcomidl/sources.inc
new file mode 100644
index 000000000..407eb4e3c
--- /dev/null
+++ b/private/ole32/com/dcomidl/sources.inc
@@ -0,0 +1,3 @@
+#
+#
+#