Author: akhaldi
Date: Sun Jul 19 22:31:17 2015
New Revision: 68444
URL:
http://svn.reactos.org/svn/reactos?rev=68444&view=rev
Log:
[INSENG] Sync with Wine Staging 1.7.47. CORE-9924
Added:
trunk/reactos/dll/win32/inseng/inseng_classes.idl
- copied, changed from r68415, trunk/reactos/dll/win32/inseng/inseng.idl
trunk/reactos/dll/win32/inseng/inseng_classes.rgs
- copied unchanged from r68415, trunk/reactos/dll/win32/inseng/inseng.rgs
Removed:
trunk/reactos/dll/win32/inseng/inseng.idl
trunk/reactos/dll/win32/inseng/inseng.rgs
Modified:
trunk/reactos/dll/win32/inseng/CMakeLists.txt
trunk/reactos/dll/win32/inseng/inseng.rc
trunk/reactos/dll/win32/inseng/inseng_main.c
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/inseng/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inseng/CMakeList…
==============================================================================
--- trunk/reactos/dll/win32/inseng/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inseng/CMakeLists.txt [iso-8859-1] Sun Jul 19 22:31:17 2015
@@ -10,6 +10,6 @@
add_library(inseng SHARED ${SOURCE} inseng.rc)
set_module_type(inseng win32dll)
-target_link_libraries(inseng wine)
+target_link_libraries(inseng uuid wine)
add_importlibs(inseng msvcrt kernel32 ntdll)
add_cd_file(TARGET inseng DESTINATION reactos/system32 FOR all)
Removed: trunk/reactos/dll/win32/inseng/inseng.idl
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inseng/inseng.id…
==============================================================================
--- trunk/reactos/dll/win32/inseng/inseng.idl [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inseng/inseng.idl (removed)
@@ -1,35 +0,0 @@
-/*
- * COM Classes for inseng
- *
- * Copyright 2010 Alexandre Julliard
- *
- * 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
- */
-
-#pragma makedep register
-
-[
- helpstring("Microsoft Active Setup Engine"),
- threading(apartment),
- uuid(6e449686-c509-11cf-aafa-00aa00b6015c)
-]
-coclass ActiveSetupEng { }
-
-[
- helpstring("Download Site Manager"),
- threading(apartment),
- uuid(bfc880f1-7484-11d0-8309-00aa00b6015c)
-]
-coclass DLManager { }
Modified: trunk/reactos/dll/win32/inseng/inseng.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inseng/inseng.rc…
==============================================================================
--- trunk/reactos/dll/win32/inseng/inseng.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inseng/inseng.rc [iso-8859-1] Sun Jul 19 22:31:17 2015
@@ -1 +1 @@
-1 WINE_REGISTRY "inseng.rgs"
+1 WINE_REGISTRY "inseng_classes.rgs"
Removed: trunk/reactos/dll/win32/inseng/inseng.rgs
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inseng/inseng.rg…
==============================================================================
--- trunk/reactos/dll/win32/inseng/inseng.rgs [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inseng/inseng.rgs (removed)
@@ -1,17 +0,0 @@
-HKCR
-{
- NoRemove Interface
- {
- }
- NoRemove CLSID
- {
- '{6E449686-C509-11CF-AAFA-00AA00B6015C}' = s 'Microsoft Active Setup
Engine'
- {
- InprocServer32 = s '%MODULE%' { val ThreadingModel = s
'Apartment' }
- }
- '{BFC880F1-7484-11D0-8309-00AA00B6015C}' = s 'Download Site
Manager'
- {
- InprocServer32 = s '%MODULE%' { val ThreadingModel = s
'Apartment' }
- }
- }
-}
Copied: trunk/reactos/dll/win32/inseng/inseng_classes.idl (from r68415,
trunk/reactos/dll/win32/inseng/inseng.idl)
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inseng/inseng_cl…
==============================================================================
--- trunk/reactos/dll/win32/inseng/inseng.idl [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inseng/inseng_classes.idl [iso-8859-1] Sun Jul 19 22:31:17
2015
@@ -20,16 +20,4 @@
#pragma makedep register
-[
- helpstring("Microsoft Active Setup Engine"),
- threading(apartment),
- uuid(6e449686-c509-11cf-aafa-00aa00b6015c)
-]
-coclass ActiveSetupEng { }
-
-[
- helpstring("Download Site Manager"),
- threading(apartment),
- uuid(bfc880f1-7484-11d0-8309-00aa00b6015c)
-]
-coclass DLManager { }
+#include "inseng.idl"
Modified: trunk/reactos/dll/win32/inseng/inseng_main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inseng/inseng_ma…
==============================================================================
--- trunk/reactos/dll/win32/inseng/inseng_main.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inseng/inseng_main.c [iso-8859-1] Sun Jul 19 22:31:17 2015
@@ -33,13 +33,344 @@
//#include "winuser.h"
#include <ole2.h>
#include <rpcproxy.h>
-//#include "initguid.h"
+#include <initguid.h>
+#include <inseng.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(inseng);
+static inline void *heap_alloc(size_t len)
+{
+ return HeapAlloc(GetProcessHeap(), 0, len);
+}
+
+static inline BOOL heap_free(void *mem)
+{
+ return HeapFree(GetProcessHeap(), 0, mem);
+}
+
static HINSTANCE instance;
+
+struct InstallEngine {
+ IInstallEngine2 IInstallEngine2_iface;
+ LONG ref;
+};
+
+static inline InstallEngine *impl_from_IInstallEngine2(IInstallEngine2 *iface)
+{
+ return CONTAINING_RECORD(iface, InstallEngine, IInstallEngine2_iface);
+}
+
+static HRESULT WINAPI InstallEngine_QueryInterface(IInstallEngine2 *iface, REFIID riid,
void **ppv)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = &This->IInstallEngine2_iface;
+ }else if(IsEqualGUID(&IID_IInstallEngine, riid)) {
+ TRACE("(%p)->(IID_IInstallEngine %p)\n", This, ppv);
+ *ppv = &This->IInstallEngine2_iface;
+ }else if(IsEqualGUID(&IID_IInstallEngine2, riid)) {
+ TRACE("(%p)->(IID_IInstallEngine2 %p)\n", This, ppv);
+ *ppv = &This->IInstallEngine2_iface;
+ }else {
+ TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static ULONG WINAPI InstallEngine_AddRef(IInstallEngine2 *iface)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ LONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+
+ return ref;
+}
+
+static ULONG WINAPI InstallEngine_Release(IInstallEngine2 *iface)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ LONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+
+ if(!ref)
+ heap_free(This);
+
+ return ref;
+}
+
+static HRESULT WINAPI InstallEngine_GetEngineStatus(IInstallEngine2 *iface, DWORD
*status)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%p)\n", This, status);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetCifFile(IInstallEngine2 *iface, const char
*cab_name, const char *cif_name)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s %s)\n", This, debugstr_a(cab_name),
debugstr_a(cif_name));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_DownloadComponents(IInstallEngine2 *iface, DWORD
flags)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%x)\n", This, flags);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_InstallComponents(IInstallEngine2 *iface, DWORD
flags)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%x)\n", This, flags);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_EnumInstallIDs(IInstallEngine2 *iface, UINT index,
char **id)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%d %p)\n", This, index, id);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_EnumDownloadIDs(IInstallEngine2 *iface, UINT index,
char **id)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%d %p)\n", This, index, id);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_IsComponentInstalled(IInstallEngine2 *iface, const
char *id, DWORD *status)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_a(id), status);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_RegisterInstallEngineCallback(IInstallEngine2 *iface,
IInstallEngineCallback *callback)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%p)\n", This, callback);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_UnregisterInstallEngineCallback(IInstallEngine2
*iface)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetAction(IInstallEngine2 *iface, const char *id,
DWORD action, DWORD priority)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s %d %d)\n", This, debugstr_a(id), action, priority);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_GetSizes(IInstallEngine2 *iface, const char *id,
COMPONENT_SIZES *sizes)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_a(id), sizes);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_LaunchExtraCommand(IInstallEngine2 *iface, const char
*inf_name, const char *section)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s %s)\n", This, debugstr_a(inf_name),
debugstr_a(section));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_GetDisplayName(IInstallEngine2 *iface, const char
*id, const char *name)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s %s)\n", This, debugstr_a(id), debugstr_a(name));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetBaseUrl(IInstallEngine2 *iface, const char
*base_name)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_a(base_name));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetDownloadDir(IInstallEngine2 *iface, const char
*download_dir)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_a(download_dir));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetInstallDrive(IInstallEngine2 *iface, char drive)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%c)\n", This, drive);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetInstallOptions(IInstallEngine2 *iface, DWORD
flags)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%x)\n", This, flags);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetHWND(IInstallEngine2 *iface, HWND hwnd)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%p)\n", This, hwnd);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_SetIStream(IInstallEngine2 *iface, IStream *stream)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%p)\n", This, stream);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_Abort(IInstallEngine2 *iface, DWORD flags)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%x)\n", This, flags);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_Suspend(IInstallEngine2 *iface)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine_Resume(IInstallEngine2 *iface)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine2_SetLocalCif(IInstallEngine2 *iface, const char
*cif)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_a(cif));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallEngine2_GetICifFile(IInstallEngine2 *iface, ICifFile
**cif_file)
+{
+ InstallEngine *This = impl_from_IInstallEngine2(iface);
+ FIXME("(%p)->(%p)\n", This, cif_file);
+ return E_NOTIMPL;
+}
+
+static const IInstallEngine2Vtbl InstallEngine2Vtbl = {
+ InstallEngine_QueryInterface,
+ InstallEngine_AddRef,
+ InstallEngine_Release,
+ InstallEngine_GetEngineStatus,
+ InstallEngine_SetCifFile,
+ InstallEngine_DownloadComponents,
+ InstallEngine_InstallComponents,
+ InstallEngine_EnumInstallIDs,
+ InstallEngine_EnumDownloadIDs,
+ InstallEngine_IsComponentInstalled,
+ InstallEngine_RegisterInstallEngineCallback,
+ InstallEngine_UnregisterInstallEngineCallback,
+ InstallEngine_SetAction,
+ InstallEngine_GetSizes,
+ InstallEngine_LaunchExtraCommand,
+ InstallEngine_GetDisplayName,
+ InstallEngine_SetBaseUrl,
+ InstallEngine_SetDownloadDir,
+ InstallEngine_SetInstallDrive,
+ InstallEngine_SetInstallOptions,
+ InstallEngine_SetHWND,
+ InstallEngine_SetIStream,
+ InstallEngine_Abort,
+ InstallEngine_Suspend,
+ InstallEngine_Resume,
+ InstallEngine2_SetLocalCif,
+ InstallEngine2_GetICifFile
+};
+
+static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void
**ppv)
+{
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv);
+ *ppv = iface;
+ }else if(IsEqualGUID(&IID_IClassFactory, riid)) {
+ TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv);
+ *ppv = iface;
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
+{
+ return S_OK;
+}
+
+static HRESULT WINAPI InstallEngineCF_CreateInstance(IClassFactory *iface, IUnknown
*outer,
+ REFIID riid, void **ppv)
+{
+ InstallEngine *engine;
+ HRESULT hres;
+
+ TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv);
+
+ engine = heap_alloc(sizeof(*engine));
+ if(!engine)
+ return E_OUTOFMEMORY;
+
+ engine->IInstallEngine2_iface.lpVtbl = &InstallEngine2Vtbl;
+ engine->ref = 1;
+
+ hres = IInstallEngine2_QueryInterface(&engine->IInstallEngine2_iface, riid,
ppv);
+ IInstallEngine2_Release(&engine->IInstallEngine2_iface);
+ return hres;
+}
+
+static const IClassFactoryVtbl InstallEngineCFVtbl = {
+ ClassFactory_QueryInterface,
+ ClassFactory_AddRef,
+ ClassFactory_Release,
+ InstallEngineCF_CreateInstance,
+ ClassFactory_LockServer
+};
+
+static IClassFactory InstallEngineCF = { &InstallEngineCFVtbl };
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
{
@@ -60,8 +391,12 @@
*/
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
{
- FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
-
+ if(IsEqualGUID(rclsid, &CLSID_InstallEngine)) {
+ TRACE("(CLSID_InstallEngine %s %p)\n", debugstr_guid(iid), ppv);
+ return IClassFactory_QueryInterface(&InstallEngineCF, iid, ppv);
+ }
+
+ FIXME("(%s %s %p)\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
return CLASS_E_CLASSNOTAVAILABLE;
}
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sun Jul 19 22:31:17 2015
@@ -84,7 +84,7 @@
reactos/dll/win32/inetcomm # Synced to WineStaging-1.7.47
reactos/dll/win32/inetmib1 # Synced to WineStaging-1.7.37
reactos/dll/win32/initpki # Synced to WineStaging-1.7.37
-reactos/dll/win32/inseng # Synced to WineStaging-1.7.37
+reactos/dll/win32/inseng # Synced to WineStaging-1.7.47
reactos/dll/win32/iphlpapi # Out of sync
reactos/dll/win32/itircl # Synced to WineStaging-1.7.37
reactos/dll/win32/itss # Synced to WineStaging-1.7.37