笔记

1. I/O堆栈的主要目的是保存功能代码和I/O请求的参数

 

2. IoCopyCurrentIrpStackLocationToNext和IoSkipCurrentIrpStackLocation用法上的区别:

 

A driver calls IoCopyCurrentIrpStackLocationToNext to copy the IRP parameters from its stack location to the next-lower driver's stack location.

After calling this routine, a driver typically sets an I/O completion routine with IoSetCompletionRoutine before passing the IRP to the next-lower driver with IoCallDriver. Drivers that pass on their IRP parameters but do not set an I/O completion routine should call IoSkipCurrentIrpStackLocation instead of this routine.

 

现在暂时还不知道I/O completion routine 是干嘛用的,硬着头皮继续往下吧

 

3. 现在理解的IO_STACK_LOACTION的作用就是保存IRP传到下一层驱动时的信息用的

 

4.VC的调试版本会生成跳转表

5.On x86 Pentium II processors and higher, Windows uses the special sysenter instruction,
which Intel defined specifically for fast system service dispatches. To support the instruction,
Windows stores at boot time the address of the kernel’s system service dispatcher routine in a
machine specific register (MSR) associated with the instruction. The execution of the instruction
causes the change to kernel mode and execution of the system service dispatcher. The system
service number is passed in the EAX processor register and the EDX register points to the list of
caller arguments. To return to user mode, the system service dispatcher usually executes the
sysexit instruction. (In some cases, like when the single-step flag is enabled on the processor, the
system service dispatcher uses the iretd instead because stepping over a sysexit instruction with
the kernel debugger would result in an undefined system state leading to a crash.)

6.system进程的PEB为NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值