阅读:1329回复:1
发IRP删除文件问题请教!
我在Sfilter中自己IRP 来实现删除一个文件的功能:但是在// 安装IRP完成例程
// IoSetCompletionRoutine(Irp, SfMyDeleteFileCompleted, 0, TRUE, TRUE, TRUE); (void) IoCallDriver(DeviceObject, Irp); 之后,程序就会跳进 NTSTATUS SfPassThrough ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { { ASSERT(!IS_MY_CONTROL_DEVICE_OBJECT( DeviceObject )); ASSERT(IS_MY_DEVICE_OBJECT( DeviceObject )); IoSkipCurrentIrpStackLocation( Irp ); return IoCallDriver( ((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp ); } 默认例程中,到第一句就蓝屏了,把前两句屏蔽掉到return也蓝屏,到底是怎么回事啊?请高人指教! |
|
沙发#
发布于:2007-07-16 14:47
1、文件的Delete
Delete实际上是通过向FSD发送IRP_MJ_SET_INFORMATION的IRP,并把IrpSp-> Parameters.SetFile.FileInformationClass设置为FileDispositionInformation,用一个 FILE_DISPOSITION_INFORMATION结构填充buffer来执行的。 fdi.DeleteFile=TRUE; irpsp->MajorFunction=IRP_MJ_SET_INFORMATION; irpsp->Parameters.SetFile.Length = sizeof(FILE_DISPOSITION_INFORMATION); irpsp->Parameters.SetFile.FileInformationClass = FileDispositionInformation; irpsp->Parameters.SetFile.DeleteHandle = (HANDLE)handle; |
|
|