【问题标题】:Syscalls in Windows [duplicate]Windows中的系统调用[重复]
【发布时间】:2015-01-11 03:28:57
【问题描述】:

在 Linux 中,我可以在 C 中编程 exit(0);或在 ASM (__NR_exit 1, int 0x80) 中使用系统调用退出我的程序,但在 Windows 中是否相同?我可以使用系统调用并且我在 C 中的函数在用户空间中使用内部系统调用吗?

【问题讨论】:

  • 在 Windows 上,旧机制使用 int 0x2e,但是您没有使用快速系统调用机制(如果可用)。你可以只调用 NTDLL 中的东西。
  • Int 0x2e 并非在所有 Windows 版本中都可用——尤其是在旧的 9x 系列中。微软从未正式“允许”直接访问系统调用,因此他们可以随时删除此中断。

标签: windows assembly system-calls


【解决方案1】:

类似,但细节不同。

在 Windows 中,您的 exit 调用最终将在对 ExitProcess Windows API 函数的调用中结束,但您也可以直接调用它并以这种方式终止您的应用程序。不过,不一定建议这样做,因为 Exit 可能会进行直接 API 调用无法进行的清理。

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 2018-07-20
    • 2014-09-22
    • 1970-01-01
    • 2021-04-29
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多