Dav*_*rtz 12
IRP是Windows内核结构.它们用于表示在内核系统中移动时的I/O请求.例如,需要从块设备读取的文件系统生成表示其读取请求的IRP并将其交给块设备.块设备处理IRP,将结果放入IRP,标记它完成,并告诉文件系统查看IRP以获取数据.设备可以维护他们正在处理的IRP队列.
IOCTL是对设备的请求,通常从用户空间应用程序接收.它们通常用于不适合标准API的请求.例如,您通常不会使用IOCTL在文件系统上打开文件.
当程序向设备发出IOCTL时,会在内核空间中创建IRP(通常为IRP_MJ_DEVICE_CONTROL)以反映该请求.
总之,IOCTL是对设备驱动程序的特殊类型的"杂项"请求.IRP是用于管理Windows驱动程序内核体系结构内的各种请求的数据结构.