驱动文件管理之文件对象和磁盘对象

it2023-08-06  66

 

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);

总之和数据堆栈相关的是对应的设备对象,而真实的文件对象对应的是真实的磁盘对象

最新回复(0)