首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤驱动程序中文件删除时生成的IRP消息是什么?

过滤驱动程序中文件删除时生成的IRP消息是什么?
EN

Stack Overflow用户
提问于 2018-06-15 06:42:19
回答 1查看 730关注 0票数 0

我试图创建一个过滤器驱动程序来阻止文件删除操作,但是我无法识别删除文件的IRP消息。

我使用了下面的代码;它在windows 7中工作,但在windows 8或更高版本中不起作用。

代码语言:javascript
复制
if (pIrp->MajorFunction==IRP_MJ_WRITE || pIrp->MajorFunction==IRP_MJ_SET_INFORMATION ||
            pIrp->MajorFunction==IRP_MJ_SET_VOLUME_INFORMATION || pIrp->MajorFunction==IRP_MJ_SET_SECURITY ||
            pIrp->MajorFunction==IRP_MJ_SET_QUOTA)
    {
                             DbgPrint("fdrv :Read only operation block");
            Irp->IoStatus.Status = STATUS_ACCESS_DENIED;//Deny Access
            Irp->IoStatus.Information = 0;
            IoCompleteRequest(Irp, IO_NO_INCREMENT);
            return STATUS_ACCESS_DENIED;

            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 23:47:32

存在2种删除文件的方法

--

代码语言:javascript
复制
union {
    PVOID Buffer;
    PFILE_DISPOSITION_INFORMATION pfdi;
    PFILE_DISPOSITION_INFORMATION_EX pfdi_ex;
};
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
switch (IrpSp->MajorFunction)
{
case IRP_MJ_SET_INFORMATION:
    Buffer = Irp->AssociatedIrp.SystemBuffer;
    switch (IrpSp->Parameters.SetFile.FileInformationClass)
    {
    case FileDispositionInformation:
        if (pfdi->DeleteFile)
        {
            //
        }
        break;
    case FileDispositionInformationEx:
        if (pfdi_ex->Flags & FILE_DISPOSITION_DELETE)
        {
            //
        }
        break;
    }
    break;
case IRP_MJ_CREATE:
    if (IrpSp->Parameters.Create.Options & FILE_DELETE_ON_CLOSE)
    {
        //
    }
    break;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50870373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档