如何从Windows Solaris for Linux(WSL)中的Linux二进制文件调用Windows API函数?我很确定没有记录的方法可以这样做,但尝试它可能会很有趣。
我有兴趣调用Win32函数,或者如果不可能,至少是Windows NT本机API(Nt *,Zw *)。本机API应该至少可用,因为运行Linux进程的组件(lxss)依赖于这些API。
可能需要构建一个类似LoadLibrary的自定义函数来加载Windows DLL。另一个想法是在进程内存中搜索已知的内核函数(即用户模式入口点)。
有人试过这个并想分享一个解决方案吗?
答案 0 :(得分:5)
简而言之,你不能。
Linux进程运行的实际进程不是Win32进程,无法加载和执行Win32用户模式代码,也无法调用标准的Win32 NT内核入口点。
有关WSL使用的PicoProcess基础架构的更多信息,请阅读this blog and/or watch the accompanying video。
如果您确实想从WSL中运行的代码“调用”Windows代码,您可能需要考虑使用某种形式的套接字/消息传递/ RPC / REST调用技术,其中关系的两端/两端可以监听和响应通过某个网络/套接字/管道传送的消息。