On 24.01.2016 06:04, Alexandre Julliard wrote:
Sebastian Lackner sebastian@fds-team.de writes:
We already have bugs for issues caused by drivers trying to communicate with each other: https://bugs.winehq.org/show_bug.cgi?id=37356.
How do you want to decide which drivers should go into the same process, and which not? As mentioned above, loading the same driver twice is something which is not supported in most cases.
We could have configuration options for this, and maybe some heuristics to detect it automatically when possible.
If a solution with marshalling all structs back and forth is preferred, there is also no need to move the code for loading the driver. Instead, ZwLoadDriver should spawn a new service then. However that only works as long as drivers use officially documented structures.
I don't think we want to marshall kernel data structures across processes.
I like the idea. Its not perfect, but a good compromise between isolation and functionality. For drivers running in the same "kernel group", we should probably use a separate thread for each one, so we can still catch most crashes. Its relatively unlikely that a crash occurs while holding a loader or heap lock.