I/O 请求数据包
MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/hh439638(v=vs.85).aspx
发送到设备驱动程序的大部分请求都打包在 I/O 请求数据包 (IRP) 中。操作系统组件或驱动程序将 IRP 发送到驱动程序,方法是调用 IoCallDriver,它有两个参数:指向 DEVICE_OBJECT 的指针和指向 IRP 的指针。DEVICE_OBJECT 具有指向关联 DRIVER_OBJECT 的指针。当组件调用 IoCallDriver 时,我们说组件将 IRP 发送到设备对象或将 IRP 发送到与设备对象关联的驱动程序。有时,我们使用短语传递 IRP 或转发 IRP 而非发送 IRP。
通常,IRP 由在堆栈中排列的多个驱动程序进行处理。堆栈中的每个驱动程序都与一个设备对象关联。有关详细信息,请参阅设备节点和设备堆栈。如果 IRP 由设备堆栈进行处理,则通常首先发送 IRP 至设备堆栈中的顶部设备对象。例如,如果 IRP 由此图中显示的设备堆栈进行处理,则会首先将 IRP 发送至设备堆栈顶部的筛选器设备对象(筛选器 DO)。

沿着设备堆栈向下传递 IRP
假设 I/O 管理器将 IRP 发送至图中的筛选器 DO。与筛选器 DO 关联的驱动程序 AfterThought.sys 处理 IRP,然后将其传递至功能设备对象 (FDO),该对象在设备堆栈中紧挨设备对象之下。当驱动程序将 IRP 传递至设备堆栈中紧挨设备对象之下的对象时,我们说驱动程序沿着设备堆栈向下传递 IRP。
某些 IRP 沿着设备堆栈一路向下传递至物理设备对象 (PDO)。其他 IRP 从未到达 PDO,原因是这些 IRP 由 PDO 之上的驱动程序之一完成。
IRP 为自包含型
就 IRP 包含驱动程序处理 I/0 请求所需的全部信息而言,IRP 结构为自包含结构。IRP 结构的某些部分包含堆栈中所有参与驱动程序共同的信息。IRP 的其他部分包含特定于堆栈中特定驱动程序的信息。
I/O 请求数据包的更多相关文章
- iOS开发之Socket通信实战--Request请求数据包编码模块
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
- JavaWeb_响应和请求数据包
Google浏览器 F12中Network->Header部分 <%@ page language="java" import="java.util.*&qu ...
- Servlet处理Json请求数据包
request.setCharacterEncoding('UTF-8'); response.setContentType('text/html;charset=UTF-8'); String ac ...
- “ping”命令的原理就是向对方主机发送UDP数据包,HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”
Socket 是一套建立在TCP/IP协议上的接口不是一个协议 应用层: HTTP FTP SMTP Web 传输层: 在两个应用程序之间提供了逻辑而不是物理的通信(TCP UDP) T ...
- TCP传输小数据包效率问题(译自MSDN)
TCP传输小数据包效率问题(译自MSDN) http://www.ftpff.com/blog/?q=node/16 摘要:当使用TCP传输小型数据包时,程序的设计是相当重要的.如果在设计方案中不对T ...
- 关于postman中表单提交与数据包提交的问题,file_get_contents("php://input")可以获取数据,$_POST不能获取数据
Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入 ...
- openVswitch(OVS)源代码分析之工作流程(数据包处理)
上篇分析到数据包的收发,这篇开始着手分析数据包的处理问题.在openVswitch中数据包的处理是其核心技术,该技术分为三部分来实现:第一.根据skb数据包提取相关信息封装成key值:第二.根据提取到 ...
- http请求数据的格式
最近看了tinyhttpd的服务器代理,看了看http请求数据包的格式和内容 http请求报包含三个部分: 请求行 + 请求头 + 数据体 请求行包含三个内容 method + request-URI ...
- ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测
利用 ICMP 隧道穿透防火墙 转自:http://xiaix.me/li-yong-icmp-sui-dao-chuan-tou-fang-huo-qiang/ 以前穿透防火墙总是使用 SSH 隧道 ...
随机推荐
- Excel替换应用
* 是通配符 ,代表任意字符 ?也是通配符, 代表单个字符替换回车 : 按住alt键不放,然后依次通过数字键盘输入1和0两个数字,放开数字键后再放开alt键.
- echarts图表标签(axisLabel)折行
在项目中遇到了一个echarts图表标签过长需折行的需求,so引出这篇总结,啦啦啦有帮助就多多支持啦,撒花撒花撒花~~~~ 在此不对echarts其他用法做解释,详细见echarts文档(点击前往) ...
- Socket实现粗略的Android聊天功能
面试时写过,但是很乱,今天看到代码库里有一个,还是很规范的,贴出来. 主要用到俩类,一个是ServerSocket.class 一个是Socket.class. 记得要加权限: <uses-p ...
- new date() 在Linux下引起的时间差问题
java工程部署到Linux时,使用new date()获取的时间出现时间差,通过查阅资料,发现有可能是服务器时间设置问题,JVM问题,jdk问题: 1.服务器时间设置问题: 正确的时间显示 有 CS ...
- Spring任务调度器之Task的使用
Spring Task提供两种方式进行配置,正如大家所想吧,还是一种是annotation(标注),而另外一种就是XML配置了.但其实这里我觉得比较尴尬,因为任务调度这样的需求,通常改动都是比较多的, ...
- [ JS 进阶 ] 基本类型 引用类型 简单赋值 对象引用
ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两 ...
- h5移动端-1
iphone3 : 设备分辨率 : 320*480 屏幕分辨率 : 320*480 iphone4 : 设备分辨率 : 320*480 屏幕分辨率 : 640*960 iphone5 : 设备分辨率 ...
- Scala笔记整理
使用类型参数化数组(Array) 创建java.math.BigInteger实例: var big = new java .math.BigInteget("12345678") ...
- hdu1087 dp
题意:给定一串数字,要求选取一个严格递增的子序列,使序列和最大. dp[i] 表示以 i 为结尾的子序列的最大和,dp[i] = max{dp[j]+a[i]}(j 从 0 到 i-1),dp[0]是 ...
- BZOJ 1801中国象棋 DP
1801: [Ahoi2009]chess 中国象棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1426 Solved: 826[Submit][ ...