在不同版本的OS上,相同的系统调用ID值负责调用不同的内核函数。那么,当我们使用Windows 7上Windows XP时代使用的可执行文件时,为什么整个应用程序都能正常工作?
答案 0 :(得分:1)
Windows提供了大量的DLL,其中一些DLL充当系统调用周围的精简(有时不是那么精简)包装。
当不同Windows版本之间的系统调用ID更改时,这些DLL也会更改。
但是您导入例如CloseHandle()
中的kernel32.dll
的名称,因此您看不到更改,并且一切正常(也就是说,如果我们不考虑可能会更改程序行为的错误和错误修复,不幸地依赖)。