Sorry, I overlooked that the function is also used for getting already loaded dlls. I'll extend the tests and send an updated fix soon.
I take that back, the issue lies deeper.
Currently all built-in dlls are given a path inside "C:\windows\system32" when they are loaded. When they are an sxs dll, they need to be given the proper path inside winsxs. This can easily be verified by loading msvcp90 and getting the module location by GetModulePathA.
As a solution, we could pass the expected sxs path to load_builtin_callback, and then just use that instead of calling get_builtin_fullname. Or we query the activation context inside load_builtin_callback again.
What do you suggest?
Regards, Fabian Maurer