Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 葡萄酒如何翻译系统调用?_Linux_Windows_Wine - Fatal编程技术网

Linux 葡萄酒如何翻译系统调用?

Linux 葡萄酒如何翻译系统调用?,linux,windows,wine,Linux,Windows,Wine,我的理解是Wine直接执行PE可执行文件中包含的机器代码。假设这是正确的,那么如果机器代码包含系统调用(Linux显然不理解)会发生什么?葡萄酒不知怎的拦截了它们吗?如果是这样,它到底是如何工作的 我试图在Wine的源代码中找到答案,但发现它令人望而生畏。我甚至找不到机器代码实际执行的位置。我非常确定系统调用在生产应用程序中非常罕见,或者至少在wine上运行的调用非常罕见。wine模拟系统调用,或者更具体地说是Windows API。Wine本质上就是一个Windows API仿真器。一些Win

我的理解是Wine直接执行PE可执行文件中包含的机器代码。假设这是正确的,那么如果机器代码包含系统调用(Linux显然不理解)会发生什么?葡萄酒不知怎的拦截了它们吗?如果是这样,它到底是如何工作的


我试图在Wine的源代码中找到答案,但发现它令人望而生畏。我甚至找不到机器代码实际执行的位置。

我非常确定
系统
调用在生产应用程序中非常罕见,或者至少在wine上运行的调用非常罕见。wine模拟系统调用,或者更具体地说是Windows API。Wine本质上就是一个Windows API仿真器。一些Windows API函数可以通过调用等效的Linux API函数(系统调用)来实现,但大多数都要比这复杂得多。我很确定,唯一直接进行系统调用的Windows程序是恶意软件。程序应该通过系统DLL来访问内核。Zan是对的,不需要拦截任何东西,Wine只提供各种系统DLL的自己版本。不支持直接调用Windows内核,并且内核接口会随着Windows的每个新版本而更改。@Praxelitic,它在DOS vm模式下处理INT: