IoAttachDevice;IoAttachDeviceToDeviceStack
来源:互联网 发布:夜间灯光数据下载 编辑:程序博客网 时间:2024/06/07 01:42
IoAttachDevice
NTSTATUS
IoAttachDevice(
IN PDEVICE_OBJECT SourceDevice,
IN PUNICODE_STRING TargetDevice,
OUT PDEVICE_OBJECT *AttachedDevice
);
SourceDevice是要挂上的设备,TargetDevice是目标设备
执行结果:SourceDevice将挂载TargetDevice设备栈的最上层
AttachedDevice:On return, contains a pointer to the target device object if the attachment succeeds
IoAttachDeviceToDeviceStack
PDEVICE_OBJECT
IoAttachDeviceToDeviceStack(
IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice
);
执行结果:SourceDevice将挂载TargetDevice设备栈的最上层
返回值:是这个设备栈SourceDevice的下层,也就是不一定是TargetDevice,除非TargetDevice原本是最上层的。
NTSTATUS
IoAttachDevice(
IN PDEVICE_OBJECT SourceDevice,
IN PUNICODE_STRING TargetDevice,
OUT PDEVICE_OBJECT *AttachedDevice
);
SourceDevice是要挂上的设备,TargetDevice是目标设备
执行结果:SourceDevice将挂载TargetDevice设备栈的最上层
AttachedDevice:On return, contains a pointer to the target device object if the attachment succeeds
IoAttachDeviceToDeviceStack
PDEVICE_OBJECT
IoAttachDeviceToDeviceStack(
IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice
);
执行结果:SourceDevice将挂载TargetDevice设备栈的最上层
返回值:是这个设备栈SourceDevice的下层,也就是不一定是TargetDevice,除非TargetDevice原本是最上层的。
疑问:IoAttachDevice的 AttachedDevice 难道就是返回 TargetDevice?而不是下一层? msdn也没有说明
引用内容
实验说明:
创建三个设备A、B、C
A是最底层,然后挂载B到A上面
然后分别调用IoAttachDevice IoAttachDeviceToDeviceStack挂载C到A上面
创建三个设备A、B、C
A是最底层,然后挂载B到A上面
然后分别调用IoAttachDevice IoAttachDeviceToDeviceStack挂载C到A上面
引用内容
实验结果:
1、两个函数都是挂载到设备栈的最上层。如图:
2、IoAttachDevice 的输出值 OUT PDEVICE_OBJECT *AttachedDevice 以及 IoAttachDeviceToDeviceStack的返回值都是设备B的指针
结论:
说明两个函数的效果是一样的,不过IoAttachDevice 底层调用的还是IoAttachDeviceToDeviceStack
实验源代码:
点击下载此文件
- IoAttachDevice;IoAttachDeviceToDeviceStack
- IoAttachDevice和IoAttachDeviceToDeviceStack 基础解说以及实现
- IoAttachDevice
- IoAttachDeviceToDeviceStack routine
- IoAttachDeviceToDeviceStack方法
- 剖析IoAttachDevice的实现
- IoAttachDeviceToDeviceStack作用详解
- IoAttachDeviceToDeviceStack的参数及其返回值的层次关系
- 黑马程序员-005SQL语句锦集
- 知识回顾10、类装载器学习一、类加载器的基本概念
- 二元查找树转换为它的镜像
- 黑马程序员-文件IO操作
- Android测试教程(10):ActivityInstrumentationTestCase2示例
- IoAttachDevice;IoAttachDeviceToDeviceStack
- Android OpenGL ES 开发教程(10):绘制线段Line Segment
- Oracle培训的一些感受
- Android ApiDemos示例解析(8):App->Activity->Hello world
- Java Reflection 教程(2): Classes 类定义
- 敏捷个人2012.5月份户外活动报道:0费用京郊经典户外路线【京西古道】
- KMP算法解决字符串匹配问题
- Oracle10g Release 2手工建立数据库步骤
- 没什么原因的感到不爽