【问题标题】:What is the IRP message generated on file delete in a filter driver?在过滤器驱动程序中删除文件时生成的 IRP 消息是什么?
【发布时间】:2018-11-24 23:48:30
【问题描述】:

我正在尝试创建过滤器驱动程序来阻止文件删除操作,但我无法识别删除文件时的 IRP 消息。

我使用下面的代码;它适用于 Windows 7,但不适用于 Windows 8 或更高版本。

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;

            }

【问题讨论】:

    标签: c windows driver minifilter filter-driver


    【解决方案1】:

    存在两种删除文件的方法

    --

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-16
      • 2021-08-19
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2021-11-03
      相关资源
      最近更新 更多