IRP结构与理解

Irp->AssociatedIrp.SystemBuffer //输入输出缓冲区 使用DO_BUFFER_IO
Irp->IoStatus.Status //返回给用户层的状态,表示这次通信的结果
Irp->IoStatus.Information //返回给用户层的大小
Irp->UserBuffer //USER_BUFFER时的通信
Irp->MdlAddress //使用MDL映射机制时的通信

PIO_STACK_LOCATION irpStack;
irpStack = IoGetCurrentIrpStackLocation (Irp);//从栈上取IRP信息
irpStack->Parameters.Read.Length //ReadFile/WriteFile传入的大小
irpStack->Parameters.Read.ByteOffset //ReadFile/WriteFile从哪读写偏移
irpStack->Parameters.DeviceIoControl.IoControlCode//控制码
irpStack->Parameters.DeviceIoControl.InputBufferLength//输入缓冲区大小
irpStack->Parameters.DeviceIoControl.OutputBufferLength//输出缓冲区大小
irpStack->MajorFunction//分发函数数组
irpStack->MinorFunction
irpStack->DeviceObject
irpStack->FileObject

你可能感兴趣的:(驱动学习,杂谈)