驱动学习(1)---IRP和IO堆栈

WDM使用分层设备对象结构的目的就是使IRP能方便地从一层驱动程序传递到下一层驱动程序。 IPR创建的同时创建IO堆栈数组,并随IRP一起从上层驱动传递到下层。上层为下层建立IO堆栈,若要设置完成例程则使用IoCopyCurrentIrpStackLocationToNext建立堆栈,若无需设置完成例程,使用IoSkipCurrentIrpStackLocation,不建立IO堆栈,因为建立IO堆栈单元的作用主要是为了能使IRP完成时能调用IRP完成例程。每个IO堆栈单元都有一个完成例程。每处理一次复制堆栈操作,堆栈指针向下移动一次,直至IRP完成回卷调用IO完成例程。

你可能感兴趣的:(IO)