gpt4 book ai didi

c - IOCTL 和 IRP 之间有什么区别

转载 作者:太空狗 更新时间:2023-10-29 15:45:05 25 4
gpt4 key购买 nike

我一直在研究一些 codeproject有关驱动程序开发的文章,但对 IOCTL 和 IRP 有一些困惑。据我所见,IOCTL 似乎是从用户模式发送的,并转换为 IRP。 IRP 是操作系统和设备之间的消息,但这似乎与我正在阅读的描述不一致……让我觉得我可能遗漏了什么。

TLDR IOCTL 和 IRP 之间有什么区别?

最佳答案

IRP 是 Windows 内核结构。它们用于表示在内核系统中移动的 I/O 请求。例如,需要从 block 设备读取的文件系统会生成一个 IRP,表示其读取请求并将其交给 block 设备。 block 设备处理 IRP,将结果放入 IRP,将其标记为完成,并告诉文件系统查看 IRP 以获取数据。设备可以维护它们正在处理的 IRP 队列。

IOCTL 是对设备的请求,通常从用户空间应用程序接收。它们通常用于不适合标准 API 的请求。例如,您通常不会使用 IOCTL 打开文件系统上的文件。

当程序向设备发出 IOCTL 时,会在内核空间中创建 IRP(通常为 IRP_MJ_DEVICE_CONTROL)以反射(reflect)该请求。

总而言之,IOCTL 是对设备驱动程序的一种特殊类型的“杂项”请求。 IRP 是一种数据结构,用于管理 Windows 驱动程序内核架构中的各种请求。

关于c - IOCTL 和 IRP 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18901467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com