[Bug 20296] League of Legends: crash after eula

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Apr 10 17:15:13 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=20296

--- Comment #54 from Christoph Hohmann <reboot at gmx.ch> 2011-04-10 17:15:11 CDT ---
I think you mixed up the DcomLaunch service and dllhost.exe a bit in the first
part.

What I understood is:

1. services.exe is the service manager. When it is started it checks the
registry for services that have to be started. Services are executables (.exe).
I think this is already implemented in Wine.

2. DcomLaunch is a service (Found in the registry under
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services)
  - Service name: DcomLaunch
  - Display name: DCOM Server Process Launcher
  - Commandline: svchost.exe -k DcomLaunch

3. svchost.exe is a wrapper for services in DLLs. It get the registry entry
specified as the -k parameter from
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SvcHost, splits
it into service names, gets the service DLLs from ServiceDll in
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%servicename\Parameters,
loads the DLL in the Parameters as a DLL, and invokes the service entry point
(ServiceMain). I think this already implemented in Wine.

4. rpcss.dll implements the DCOM Server Process Launcher service. When it
receives a request to start a surrogate it launches dllhost.exe. This seems to
be only a part of what the DLL contains, but that is what would be needed for
League of Legends.

5. dllhost.exe loads the DLL that implements the COM interface and calls
CoRegisterSurrogateEx.

I have no idea how the communication between the application and the COM Server
Process Launcher works. That it provides a COM object itself that is used by
ole32.dll to start the surrogate server could be possible.

services.exe and svchost.exe already seems to do what they do on Windows. So
all that is needed is to implement rpcss.dll, add it to the registry and find a
way to tell it to start a dllhost.exe process from the application that needs a
COM server. DcomLaunch itself is always running, it gets the AppID it should
pass to dllhost.exe when it receives a request to start a COM server.

Maybe it would be better to ask on the wine-devel mailinglist how Wine's COM
implementation works. There seems to be some support for LOCAL_SERVER that is
not using DllSurrogate, so there has to be a way to wait for a COM server that
provides a CLSID to become available.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list