[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