最新消息:本站技术交流 QQ 群:28124927

IRP 的类型

Rootkit/驱动底层 exchen 3280浏览 0评论

IRP的全名是I/O Request Package,即输入输出请求包,它是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求, 操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。
IRP有两个基本的属性,即MajorFunction和MinorFunction,分别记录IRP的主类型和子类型。操作系统根据MajorFunction决定将IRP分发到哪个派遣例程,然后派遣例程根据MinorFunction进行细分处理。
IRP的概念类似于Windows应用程序中“消息”的概念。在Win32编程中,程序由“消息”驱动,不同的消息被分发到不同的处理函数中,否则由系统默认处理。
文件I/O的相关函数例如CreateFile、ReadFile、WriteFile、CloseHandle等分别会引发操作系统产生 IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_WRITE、IRP_MJ_CLOSE等不同的IRP,这些IRP会被传送到驱动程 序的相应派遣例程中。

以下几个常用的IRP的类型

IRP_MJ_CREATE 对应 CreateFile
IRP_MJ_CLOSE 对应 CloseHandle
IRP_MJ_READ 对应 ReadFile
IRP_MJ_WRITE 对应 WriteFile
IRP_MJ_DEVICE_CONTROL 对应 DeviceIoControl

转载请注明:exchen's blog » IRP 的类型

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址