On 24.02.2016 15:16, Aric Stewart wrote:
Signed-off-by: Aric Stewart aric@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