https://bugs.winehq.org/show_bug.cgi?id=47362
Bug ID: 47362 Summary: Media Feature Pack for W10N requires rtworkq.dll Product: Wine Version: 4.10 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: tonix64@inventati.org Distribution: ---
I've tried installing the dlls from:
https://www.microsoft.com/en-us/software-download/mediafeaturepack (1803 version)
The feature pack has all the mfplat dlls, including wmv decoders, msmpeg etc so it could be a good way to install the needed dlls for many games without getting them from dodgy places in the internet.
It seems for basic installation and registration of the components a component unavailable in wine is needed: RTWorkQ.dll.
Initially it will complain about some missing methods but incrementally adding them will in the end use these (I just hooked random methods that looked like would return good stub results and would result in safe parameter use, so this is just intended as reference, not as a solution proposal :D):
@ stub RtwqLockWorkQueue @ stub RtwqUnlockWorkQueue @ stdcall RtwqRegisterPlatformEvents(ptr) kernel32.RequestDeviceWakeup @ stdcall RtwqStartup() propsys.PSRefreshPropertySchema @ stdcall RtwqJoinWorkQueue(long ptr ptr) kernel32.SetThreadIdealProcessorEx @ stdcall RtwqLockPlatform() propsys.PSRefreshPropertySchema @ stdcall RtwqUnlockPlatform() propsys.PSRefreshPropertySchema
There's a couple other minor methods/dlls that seem to be required I think just some forwards from currently also not existing api-ms-win-core-processtopology-l1-1-0.
If RtWorkQ can be implemented at least as a proof of concept I could further test this path and maybe get the different mfplat scenarios working. I don't have enough wine/c expertise to actually implement it but I have some expertise in getting mfplat scenarios working.
For now with the spoofed forwards the dlls allow for games to load and progress a bit but it's going to hang waiting for some event probably due to the incomplete work queue.
I also tried installing a rtworkq.dll from windows, but I don't know of a legit redistributable that carries this, and also when trying it (version 10.XXX) I had to add loads more of api-ms style dlls so in the end implementing rtworkq.dll seems like a more direct fix.