【问题标题】:How IOCTL works?IOCTL 是如何工作的?
【发布时间】:2012-11-03 01:15:51
【问题描述】:

我想知道 IOCTL 是如何工作的。 我知道基础知识:

DeviceIoControl() -> kernel32.dll -> ntdll.dll -> 从用户模式到内核模式的时刻 -> I/O Manager -> IRP

问题是 IOCTL 如何从用户模式进入内核模式?是中断门、调用门还是别的什么?

如果您知道任何解释 IOCTL 详细信息的文章/书籍(不仅仅是 Windows 内部),请发布链接。

【问题讨论】:

    标签: windows kernel ioctl deviceiocontrol


    【解决方案1】:

    如果您查看Kernel32.dllDeviceIoControl 的实现,您会看到它从ntdll.dll 调用NtDeviceIoControlFile。这反过来执行syscall,它执行从用户模式到内核模式的转换。

    【讨论】:

    • 更具体地说,它将系统调用和返回地址加载到堆栈上,然后调用kifastsystemcall,然后加载一个秘密数字(提供内核模式访问权限)并生成syscall,然后kifastsystemcallret 与返回地址参数一起使用。因此,想要进入这个低级别的用户需要使用kifastsystemcall
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-07
    • 1970-01-01
    • 2014-05-15
    • 2017-07-24
    • 2016-11-13
    • 2017-10-11
    相关资源
    最近更新 更多