如何设置IRP中的功能码?
来源:互联网 发布:知乎算命准推荐 编辑:程序博客网 时间:2024/05/17 23:17
I/O栈的结构体定义大概有440几行,定义了很多很多参数,让人应接不暇。我演示我们实际使用中需要使用的几个参数。
ⅠDeviceIoControl方式
传入I/O栈的参数结构体,详见IO_STACK_LOCATION结构体
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT IoControlCode; //这个就是DeviceIoControl函数传入的功能码存储的地方。
PVOID Type3InputBuffer;
} DeviceIoControl;
①首先是从应用程序那么发出功能码,
DeviceIoControl(Handle, // 设备句柄
Code, // 32bit的自定义的功能码
InputData, InputLength, // 输入数据缓冲区地址、长度
OutputData, OutputLength, // 输出数据缓冲区地址、长度
&Feedback, // 反馈数据
&Overlapped);
②驱动程序中接收功能码:
获取当前IO栈:stack = IoGetCurrentIrpStackLocation(irp);
得到功能码: Fun_code = stack->Parameters.DeviceIoControl.IoControlCode;
③使用switch函数来分发处理不同的功能码
Ⅱ ReadFile方式
传入I/O栈的参数结构体:
Ⅲ WriteFile方式
传入I/O栈的参数结构体:
- 如何设置IRP中的功能码?
- 驱动中的IRP
- Windows驱动中的IRP
- WDM中的结构(1)---IRP
- WDM中的结构(1)---IRP
- IRP
- irp
- IRP
- IRP
- IRP
- IRP
- IRP
- irp的异步完成_取消irp设置回调函数_应用层CancelIo
- 如何在Domino服务器设置ESMTP功能?
- myeclipse 代码提示功能如何设置?
- Code::Blocks 如何设置自动提示功能?
- NotePad++如何设置自动提示功能
- CMOS中如何设置定时开机功能
- wxWidgets的编译与使用
- 请看着对方的眼睛
- Ext Grid 翻页后丢失查询参数.
- gcc编译生成共享库
- Windows任务管理器中内存使用、虚拟内存区别及与页面文件的关系
- 如何设置IRP中的功能码?
- Properties Editor 安装与使用
- SAP中如何为透明表设置日志文件?
- 多媒体互动工具
- ubuntu 最常用和终端快捷键
- 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?
- 从零开始,讲解详细,贴近实际应用,全面掌握用友ERP财务管理
- base64
- UDX 传输协议与一般传输协议的不同点及优势