阅读:1208回复:5
大牛们都进来,删除一个文件的时候,我想把另外一个目录下的某一个文件也删掉,如何做?
大牛们都进来,删除一个文件的时候,我想把另外一个目录下的某一个文件也删掉,如何做
|
|
|
沙发#
发布于:2007-07-13 14:44
删除一个文件是在SfCleanupClose()中判断吗?
|
|
|
板凳#
发布于:2007-07-13 15:03
拦截IRP_MJ_SET_INFORMATION - FileDispositionInformation;
|
|
|
地板#
发布于:2007-07-13 17:21
devia兄,拦截IRP_MJ_SET_INFORMATION - FileDispositionInformation;
改名的时候可作如下判断: BOOLEAN IsRename = (irpSp->Parameters.SetFile.FileInformationClass == FileRenameInformation); 删除的时候如何判断? |
|
|
地下室#
发布于:2007-07-13 17:25
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; 2 文件的Rename 类似于Delete,Rename是向FSD发送IRP_MJ_SET_INFORMATION的IRP,把IrpSp-> Parameters.SetFile.FileInformationClass设置为FileRenameInformation,填充buffer 为FILE_RENAME_INFORMATION结构。 fri.ReplaceIfExists=TRUE; fri.RootDirectory=0;//Set fri.FileName to full path name. fri.FileNameLength=wcslen(filename)*2; wcscpy(fri.FileName,filename);//If the RootDirectory member is NULL, and the file is being moved to a different directory, this member specifies the full pathname to be assigned to the file. irpsp->MajorFunction=IRP_MJ_SET_INFORMATION; irpsp->Parameters.SetFile.Length = sizeof(FILE_FILE_RENAME_INFORMATION); irpsp->Parameters.SetFile.FileInformationClass = FileRenameInformation; |
|
|
5楼#
发布于:2007-07-13 17:30
呵呵,这些内容其实在tooflat版主的
NTSTATUS SfSetInformation( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) {} 方法中已有答案。多谢devia版主的热心指点啊。 |
|
|