[Bug 20296] League of Legends: crash after eula

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Apr 10 20:29:42 CDT 2011


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

--- Comment #55 from Amos Wenger <amos at official.fm> 2011-04-10 20:29:39 CDT ---
(In reply to comment #54)
> I think you mixed up the DcomLaunch service and dllhost.exe a bit in the first
> part.

Yeah, sorry about that. I was a bit confused at first

> 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.

Yeah, I think I can get started with only implementing the service. I'm not
sure how to add a dll to wine (ie. what to add in Makefiles etc.) but I'll try
to figure it out from other existing dlls

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

Yeah, I also need to implement dllhost.exe so we can do away with Windows XP's
one, but it's pretty basic from what I saw, so np.

> 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.

Well that's how I would do it, I think - no matter how it's done 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.

Well if you look at dlls/ole32/rpc.c, in the RPC_GetLocalClassObject function,
there's code that waits till a local_server COM object is fully loaded
apparently (up to 30 seconds)

I think the basic algorithm stays the same, while loop with max_tries and
Sleep.. no rocket science here :) Also see
http://msdn.microsoft.com/en-us/library/ms686321(v=vs.85).aspx here for
interesting docs

-- 
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