2

我是操作系统内核领域的菜鸟。最近我研究了程序如何在内核领域工作。

我知道几个 Windows api 调用只是内核态系统调用的包装器。最后执行 syscall/sysret/sysenter 进入内核域,内核域接收器(KiFastCallEntry 等)接收它并将其扔给负责解析和处理它的处理程序。

但我知道的另一种内核域通信方式是 IOCTL,比如 DeviceIoControl()。我用它来传达我的自定义设备驱动程序。

我的问题是,系统调用和 DeviceIoControl() 有什么区别?为什么有两种(或更多)方式可用/拆分来在 Windows 中通信内核域?我可以在不调用 DeviceIoControl 的情况下使用一系列系统调用来传达我的自定义设备驱动程序吗?

感谢您阅读我的问题。祝你有美好的一天 :)

4

0 回答 0