[PATCH 2/2] Programs: Load device drivers of the same group into the same winedevice process

Sebastian Lackner sebastian at fds-team.de
Thu Feb 25 23:30:01 CST 2016


On 24.02.2016 15:16, Aric Stewart wrote:
> Signed-off-by: Aric Stewart <aric at codeweavers.com>
> ---
>  programs/services/services.c | 124 ++++++++++++++++++++++++++++
>  programs/winedevice/device.c | 191 ++++++++++++++++++++++++++++++++++++-------
>  2 files changed, 286 insertions(+), 29 deletions(-)
> 

Although the general idea seems fine, the patches are still very hacky, and I fear
we need a better method to communicate between services and winedevices - a separate
mailslot communication doesn't seem like a good idea. The main issues I still see:

* Instead of two separate communication channels, we should implement marshalling of
  data structures, and return them for example in the ServiceCtrlHandler callback.
  Depending on the exact mechanism, special care has to be taken to ensure the
  process is up and running before sending control commands.

* Currently wine supports loading of both 32-bit and 64-bit drivers. This needs
  special care in both patch 1 and patch 2. A winedevice process with the wrong
  architecture will not be able to load the driver.

* programs/services should be able to track the services correctly. Unfortunately
  it seems like the advapi32 functions do not offer any nice method to add additional
  services after startup. Maybe we could add a wine-specific extension here?

* Proper locking is required before accessing the database or services structures.
  Those are technical issues though, and can be fixed of course.

I'm currently trying a couple of own ideas, and will share them as soon as they do
something useful. ;)

Regards,
Sebastian




More information about the wine-devel mailing list