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/CMakeLists... ============================================================================== --- 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.idl... ============================================================================== --- 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.rgs... ============================================================================== --- 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_cla... ============================================================================== --- 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_mai... ============================================================================== --- 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=6... ============================================================================== --- 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