⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.c

📁 I want to provide an example file system driver for Windows NT/2000/XP. For some time I have worked
💻 C
📖 第 1 页 / 共 5 页
字号:
                ": %-16.16s %-31s %s Unknown FileInformationClass %u\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                FileInformationClass
                );
        }

        break;

    case IRP_MJ_SET_INFORMATION:

        FileInformationClass =
            IrpSp->Parameters.SetFile.FileInformationClass;

        if (FileInformationClass <= FileMaximumInformation)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s %s\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                FileInformationClassStrings[FileInformationClass]
                );
        }
        else
        {
            DbgPrint(
                DRIVER_NAME
                ": %-16.16s %-31s %s Unknown FileInformationClass %u\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                FileInformationClass
                );
        }

        break;

    case IRP_MJ_QUERY_VOLUME_INFORMATION:

        FsInformationClass =
            IrpSp->Parameters.QueryVolume.FsInformationClass;

        if (FsInformationClass <= FileFsMaximumInformation)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s %s\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                FsInformationClassStrings[FsInformationClass]
                );
        }
        else
        {
            DbgPrint(
                DRIVER_NAME
                ": %-16.16s %-31s %s Unknown FsInformationClass %u\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                FsInformationClass
                );
        }

        break;

    case IRP_MJ_DIRECTORY_CONTROL:

        if (IrpSp->MinorFunction & IRP_MN_QUERY_DIRECTORY)
        {
#ifndef _GNU_NTIFS_
            FileInformationClass =
                IrpSp->Parameters.QueryDirectory.FileInformationClass;
#else
            FileInformationClass = ((PEXTENDED_IO_STACK_LOCATION)
                IrpSp)->Parameters.QueryDirectory.FileInformationClass;
#endif

            if (FileInformationClass <= FileMaximumInformation)
            {
                DbgPrint(
                    DRIVER_NAME ": %-16.16s %-31s %s %s\n",
                    FsdGetCurrentProcessName(),
                    IrpMjStrings[IrpSp->MajorFunction],
                    FileName,
                    FileInformationClassStrings[FileInformationClass]
                    );

                if (
#ifndef _GNU_NTIFS_
                    IrpSp->Parameters.QueryDirectory.FileName
#else
                    ((PEXTENDED_IO_STACK_LOCATION)
                    IrpSp)->Parameters.QueryDirectory.FileName
#endif
                    )
                {
                    DbgPrint(
                        DRIVER_NAME ": %-16.16s FileName: %.*S FileIndex: %#x %s%s%s\n",
                        FsdGetCurrentProcessName(),
#ifndef _GNU_NTIFS_
                        IrpSp->Parameters.QueryDirectory.FileName->Length / 2,
                        IrpSp->Parameters.QueryDirectory.FileName->Buffer,
                        IrpSp->Parameters.QueryDirectory.FileIndex,
#else
                        ((PEXTENDED_IO_STACK_LOCATION)
                        IrpSp)->Parameters.QueryDirectory.FileName->Length / 2,
                        ((PEXTENDED_IO_STACK_LOCATION)
                        IrpSp)->Parameters.QueryDirectory.FileName->Buffer,
                        ((PEXTENDED_IO_STACK_LOCATION)
                        IrpSp)->Parameters.QueryDirectory.FileIndex,
#endif
                        (IrpSp->Flags & SL_RESTART_SCAN ? "SL_RESTART_SCAN " : ""),
                        (IrpSp->Flags & SL_RETURN_SINGLE_ENTRY ? "SL_RETURN_SINGLE_ENTRY " : ""),
                        (IrpSp->Flags & SL_INDEX_SPECIFIED ? "SL_INDEX_SPECIFIED " : "")
                        );
                }
                else
                {
                    DbgPrint(
                        DRIVER_NAME ": %-16.16s FileName: FileIndex: %#x %s%s%s\n",
                        FsdGetCurrentProcessName(),
#ifndef _GNU_NTIFS_
                        IrpSp->Parameters.QueryDirectory.FileIndex,
#else
                        ((PEXTENDED_IO_STACK_LOCATION)
                        IrpSp)->Parameters.QueryDirectory.FileIndex,
#endif
                        (IrpSp->Flags & SL_RESTART_SCAN ? "SL_RESTART_SCAN " : ""),
                        (IrpSp->Flags & SL_RETURN_SINGLE_ENTRY ? "SL_RETURN_SINGLE_ENTRY " : ""),
                        (IrpSp->Flags & SL_INDEX_SPECIFIED ? "SL_INDEX_SPECIFIED " : "")
                        );
                }
            }
            else
            {
                DbgPrint(
                    DRIVER_NAME
                    ": %-16.16s %-31s %s Unknown FileInformationClass %u\n",
                    FsdGetCurrentProcessName(),
                    IrpMjStrings[IrpSp->MajorFunction],
                    FileName,
                    FileInformationClass
                    );
            }
        }
        else if (IrpSp->MinorFunction & IRP_MN_NOTIFY_CHANGE_DIRECTORY)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s IRP_MN_NOTIFY_CHANGE_DIRECTORY\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName
                );

            DbgPrint(
                DRIVER_NAME ": CompletionFilter: %#x %s\n",
#ifndef _GNU_NTIFS_
                IrpSp->Parameters.NotifyDirectory.CompletionFilter,
#else
                ((PEXTENDED_IO_STACK_LOCATION)
                IrpSp)->Parameters.NotifyDirectory.CompletionFilter,
#endif
                (IrpSp->Flags & SL_WATCH_TREE ? "SL_WATCH_TREE " : "")
                );
        }
        else
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s Unknown minor function %#x\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                IrpSp->MinorFunction
                );
        }

        break;

    case IRP_MJ_FILE_SYSTEM_CONTROL:

        if (IrpSp->MinorFunction == IRP_MN_USER_FS_REQUEST)
        {
            DbgPrint(
                DRIVER_NAME
                ": %-16.16s %-31s %s IRP_MN_USER_FS_REQUEST FsControlCode: %#x\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
#ifndef _GNU_NTIFS_
                IrpSp->Parameters.FileSystemControl.FsControlCode
#else
                ((PEXTENDED_IO_STACK_LOCATION)
                IrpSp)->Parameters.FileSystemControl.FsControlCode
#endif
                );
        }
        else if (IrpSp->MinorFunction == IRP_MN_MOUNT_VOLUME)
        {
            DbgPrint(
                DRIVER_NAME
                ": %-16.16s %-31s %s IRP_MN_MOUNT_VOLUME DeviceObject: %#x\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                IrpSp->Parameters.MountVolume.DeviceObject
                );
        }
        else if (IrpSp->MinorFunction == IRP_MN_VERIFY_VOLUME)
        {
            DbgPrint(
                DRIVER_NAME
                ": %-16.16s %-31s %s IRP_MN_VERIFY_VOLUME DeviceObject: %#x\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                IrpSp->Parameters.VerifyVolume.DeviceObject
                );
        }
        else if (IrpSp->MinorFunction == IRP_MN_LOAD_FILE_SYSTEM)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s IRP_MN_LOAD_FILE_SYSTEM\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName
                );
        }
        else
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s Unknown minor function %#x\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                IrpSp->MinorFunction
                );
        }

        break;

    case IRP_MJ_DEVICE_CONTROL:

        DbgPrint(
            DRIVER_NAME ": %-16.16s %-31s %s IoControlCode: %#x\n",
            FsdGetCurrentProcessName(),
            IrpMjStrings[IrpSp->MajorFunction],
            FileName,
            IrpSp->Parameters.DeviceIoControl.IoControlCode
            );

        break;

    case IRP_MJ_LOCK_CONTROL:

        if (IrpSp->MinorFunction & IRP_MN_LOCK)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s IRP_MN_LOCK Offset: %I64u Length: %I64u Key: %u %s%s\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
#ifndef _GNU_NTIFS_
                IrpSp->Parameters.LockControl.ByteOffset.QuadPart,
                IrpSp->Parameters.LockControl.Length->QuadPart,
                IrpSp->Parameters.LockControl.Key,
#else
                ((PEXTENDED_IO_STACK_LOCATION)
                IrpSp)->Parameters.LockControl.ByteOffset.QuadPart,
                ((PEXTENDED_IO_STACK_LOCATION)
                IrpSp)->Parameters.LockControl.Length->QuadPart,
                ((PEXTENDED_IO_STACK_LOCATION)
                IrpSp)->Parameters.LockControl.Key,
#endif
                (IrpSp->Flags & SL_FAIL_IMMEDIATELY ? "SL_FAIL_IMMEDIATELY " : ""),
                (IrpSp->Flags & SL_EXCLUSIVE_LOCK ? "SL_EXCLUSIVE_LOCK " : "")
                );
        }
        else if (IrpSp->MinorFunction & IRP_MN_UNLOCK_SINGLE)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s IRP_MN_UNLOCK_SINGLE Offset: %I64u Length: %I64u Key: %u\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
#ifndef _GNU_NTIFS_
                IrpSp->Parameters.LockControl.ByteOffset.QuadPart,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -