1.首先获取磁盘文件对象
status = ObReferenceObjectByHandle(hRootFile, FILE_READ_ACCESS, *IoFileObjectType, KernelMode, &pRootFileObject, NULL);
2.获取磁盘设备对象
// 获取磁盘根目录设备对象 RootDeviceObject = pRootFileObject->Vpb->DeviceObject; RootRealDevice = pRootFileObject->Vpb->RealDevice;
3.要创建的文件附着的设备是真实设备
pFileObject->DeviceObject = RootRealDevice;
4.IRP的IO_STACK_LOCATION附着的是设备对象
pIoStackLocation->FileObject = pFileObject;
另外创建IRP也是对应的磁盘设备对象,向下一个驱动设备发送Irp
pIrp = IoAllocateIrp(RootDeviceObject->StackSize, FALSE);
总之和数据堆栈相关的是对应的设备对象,而真实的文件对象对应的是真实的磁盘对象