创建IRP传递给驱动的派遣函数的一些方法

  • 创建IRP

 

IoBuildSynchronousFsdRequest 

 

创建同步IRP

 

IoBuildAsynchronouseFsdRequest

 

创建异步IRP

 

类型: IRP_MJ_PNP , IRP_MJ_READ , IRP_MJ_WRITE , IRP_MJ_FLUSH_BUFFERS , IRP_MJ_SHUTDOWN

 

 

 

IoBuildDeviceIoControlRequest

 

创建同步IRP

 

类型:  IRP_MJ_INTERNAL_DEVICE_CONTROL , IRP_MJ_DEVICE_CONTROL

 

 

 

以上3个函数是调用此函数实现的,系统自动删除IRP,而此函数需要手动调用IoFreeIrp删除IRP

 

IoAllocateIrp

 

创建任意类型IRP

 

 

 

 

 


 

  • 派遣IRP

 

IoCallDriver

 

 

步骤:

  1. 获得设备对象指针(非句柄)
  2. 创建IRP
  3. 构造IRP的I/O堆栈
  4. 调用IoCallDriver内核函数,内部会调用派遣函数

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值