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

📄 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 页
字号:
                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
                );
        }
        else if (IrpSp->MinorFunction & IRP_MN_UNLOCK_ALL)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s IRP_MN_UNLOCK_ALL\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName
                );
        }
        else if (IrpSp->MinorFunction & IRP_MN_UNLOCK_ALL_BY_KEY)
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s IRP_MN_UNLOCK_ALL_BY_KEY Key: %u\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
#ifndef _GNU_NTIFS_
                IrpSp->Parameters.LockControl.Key
#else
                ((PEXTENDED_IO_STACK_LOCATION)
                IrpSp)->Parameters.LockControl.Key
#endif
                );
        }
        else
        {
            DbgPrint(
                DRIVER_NAME ": %-16.16s %-31s %s Unknown minor function %#x\n",
                FsdGetCurrentProcessName(),
                IrpMjStrings[IrpSp->MajorFunction],
                FileName,
                IrpSp->MinorFunction
                );
        }

        break;

    case IRP_MJ_CLEANUP:

        DbgPrint(
            DRIVER_NAME ": %-16.16s %-31s %s\n",
            FsdGetCurrentProcessName(),
            IrpMjStrings[IrpSp->MajorFunction],
            FileName
            );

        break;

    default:

        DbgPrint(
            DRIVER_NAME ": %-16.16s %-31s %s\n",
            FsdGetCurrentProcessName(),
            IrpMjStrings[IrpSp->MajorFunction],
            FileName
            );
    }
}

VOID
FsdDbgPrintComplete (
    IN PIRP Irp
    )
{
    PIO_STACK_LOCATION IrpSp;

    ASSERT(Irp != NULL);

    if (Irp->IoStatus.Status != STATUS_SUCCESS)
    {
        IrpSp = IoGetCurrentIrpStackLocation(Irp);

        DbgPrint(
            DRIVER_NAME ": %-16.16s %-31s *** Status: %s (%#x) ***\n",
            FsdGetCurrentProcessName(),
            IrpMjStrings[IrpSp->MajorFunction],
            FsdNtStatusToString(Irp->IoStatus.Status),
            Irp->IoStatus.Status
            );
    }
}

PUCHAR
FsdNtStatusToString (
    IN NTSTATUS Status
    )
{
    switch (Status)
    {
    case 0x00000000: return "STATUS_SUCCESS";
    case 0x00000001: return "STATUS_WAIT_1";
    case 0x00000002: return "STATUS_WAIT_2";
    case 0x00000003: return "STATUS_WAIT_3";
    case 0x0000003F: return "STATUS_WAIT_63";
    case 0x00000080: return "STATUS_ABANDONED_WAIT_0";
    case 0x000000BF: return "STATUS_ABANDONED_WAIT_63";
    case 0x000000C0: return "STATUS_USER_APC";
    case 0x00000100: return "STATUS_KERNEL_APC";
    case 0x00000101: return "STATUS_ALERTED";
    case 0x00000102: return "STATUS_TIMEOUT";
    case 0x00000103: return "STATUS_PENDING";
    case 0x00000104: return "STATUS_REPARSE";
    case 0x00000105: return "STATUS_MORE_ENTRIES";
    case 0x00000106: return "STATUS_NOT_ALL_ASSIGNED";
    case 0x00000107: return "STATUS_SOME_NOT_MAPPED";
    case 0x00000108: return "STATUS_OPLOCK_BREAK_IN_PROGRESS";
    case 0x00000109: return "STATUS_VOLUME_MOUNTED";
    case 0x0000010A: return "STATUS_RXACT_COMMITTED";
    case 0x0000010B: return "STATUS_NOTIFY_CLEANUP";
    case 0x0000010C: return "STATUS_NOTIFY_ENUM_DIR";
    case 0x0000010D: return "STATUS_NO_QUOTAS_FOR_ACCOUNT";
    case 0x0000010E: return "STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED";
    case 0x00000110: return "STATUS_PAGE_FAULT_TRANSITION";
    case 0x00000111: return "STATUS_PAGE_FAULT_DEMAND_ZERO";
    case 0x00000112: return "STATUS_PAGE_FAULT_COPY_ON_WRITE";
    case 0x00000113: return "STATUS_PAGE_FAULT_GUARD_PAGE";
    case 0x00000114: return "STATUS_PAGE_FAULT_PAGING_FILE";
    case 0x00000115: return "STATUS_CACHE_PAGE_LOCKED";
    case 0x00000116: return "STATUS_CRASH_DUMP";
    case 0x00000117: return "STATUS_BUFFER_ALL_ZEROS";
    case 0x00000118: return "STATUS_REPARSE_OBJECT";
    case 0x00000119: return "STATUS_RESOURCE_REQUIREMENTS_CHANGED";
    case 0x00000120: return "STATUS_TRANSLATION_COMPLETE";
    case 0x00000121: return "STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY";
    case 0x00000122: return "STATUS_NOTHING_TO_TERMINATE";
    case 0x00000123: return "STATUS_PROCESS_NOT_IN_JOB";
    case 0x00000124: return "STATUS_PROCESS_IN_JOB";
    case 0x40000000: return "STATUS_OBJECT_NAME_EXISTS";
    case 0x40000001: return "STATUS_THREAD_WAS_SUSPENDED";
    case 0x40000002: return "STATUS_WORKING_SET_LIMIT_RANGE";
    case 0x40000003: return "STATUS_IMAGE_NOT_AT_BASE";
    case 0x40000004: return "STATUS_RXACT_STATE_CREATED";
    case 0x40000005: return "STATUS_SEGMENT_NOTIFICATION";
    case 0x40000006: return "STATUS_LOCAL_USER_SESSION_KEY";
    case 0x40000007: return "STATUS_BAD_CURRENT_DIRECTORY";
    case 0x40000008: return "STATUS_SERIAL_MORE_WRITES";
    case 0x40000009: return "STATUS_REGISTRY_RECOVERED";
    case 0x4000000A: return "STATUS_FT_READ_RECOVERY_FROM_BACKUP";
    case 0x4000000B: return "STATUS_FT_WRITE_RECOVERY";
    case 0x4000000C: return "STATUS_SERIAL_COUNTER_TIMEOUT";
    case 0x4000000D: return "STATUS_NULL_LM_PASSWORD";
    case 0x4000000E: return "STATUS_IMAGE_MACHINE_TYPE_MISMATCH";
    case 0x4000000F: return "STATUS_RECEIVE_PARTIAL";
    case 0x40000010: return "STATUS_RECEIVE_EXPEDITED";
    case 0x40000011: return "STATUS_RECEIVE_PARTIAL_EXPEDITED";
    case 0x40000012: return "STATUS_EVENT_DONE";
    case 0x40000013: return "STATUS_EVENT_PENDING";
    case 0x40000014: return "STATUS_CHECKING_FILE_SYSTEM";
    case 0x40000015: return "STATUS_FATAL_APP_EXIT";
    case 0x40000016: return "STATUS_PREDEFINED_HANDLE";
    case 0x40000017: return "STATUS_WAS_UNLOCKED";
    case 0x40000018: return "STATUS_SERVICE_NOTIFICATION";
    case 0x40000019: return "STATUS_WAS_LOCKED";
    case 0x4000001A: return "STATUS_LOG_HARD_ERROR";
    case 0x4000001B: return "STATUS_ALREADY_WIN32";
    case 0x4000001C: return "STATUS_WX86_UNSIMULATE";
    case 0x4000001D: return "STATUS_WX86_CONTINUE";
    case 0x4000001E: return "STATUS_WX86_SINGLE_STEP";
    case 0x4000001F: return "STATUS_WX86_BREAKPOINT";
    case 0x40000020: return "STATUS_WX86_EXCEPTION_CONTINUE";
    case 0x40000021: return "STATUS_WX86_EXCEPTION_LASTCHANCE";
    case 0x40000022: return "STATUS_WX86_EXCEPTION_CHAIN";
    case 0x40000023: return "STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE";
    case 0x40000024: return "STATUS_NO_YIELD_PERFORMED";
    case 0x40000025: return "STATUS_TIMER_RESUME_IGNORED";
    case 0x40000026: return "STATUS_ARBITRATION_UNHANDLED";
    case 0x40000027: return "STATUS_CARDBUS_NOT_SUPPORTED";
    case 0x40000028: return "STATUS_WX86_CREATEWX86TIB";
    case 0x40000029: return "STATUS_MP_PROCESSOR_MISMATCH";
    case 0x4000002A: return "STATUS_HIBERNATED";
    case 0x4000002B: return "STATUS_RESUME_HIBERNATION";
    case 0x80000001: return "STATUS_GUARD_PAGE_VIOLATION";
    case 0x80000002: return "STATUS_DATATYPE_MISALIGNMENT";
    case 0x80000003: return "STATUS_BREAKPOINT";
    case 0x80000004: return "STATUS_SINGLE_STEP";
    case 0x80000005: return "STATUS_BUFFER_OVERFLOW";
    case 0x80000006: return "STATUS_NO_MORE_FILES";
    case 0x80000007: return "STATUS_WAKE_SYSTEM_DEBUGGER";
    case 0x8000000A: return "STATUS_HANDLES_CLOSED";
    case 0x8000000B: return "STATUS_NO_INHERITANCE";
    case 0x8000000C: return "STATUS_GUID_SUBSTITUTION_MADE";
    case 0x8000000D: return "STATUS_PARTIAL_COPY";
    case 0x8000000E: return "STATUS_DEVICE_PAPER_EMPTY";
    case 0x8000000F: return "STATUS_DEVICE_POWERED_OFF";
    case 0x80000010: return "STATUS_DEVICE_OFF_LINE";
    case 0x80000011: return "STATUS_DEVICE_BUSY";
    case 0x80000012: return "STATUS_NO_MORE_EAS";
    case 0x80000013: return "STATUS_INVALID_EA_NAME";
    case 0x80000014: return "STATUS_EA_LIST_INCONSISTENT";
    case 0x80000015: return "STATUS_INVALID_EA_FLAG";
    case 0x80000016: return "STATUS_VERIFY_REQUIRED";
    case 0x80000017: return "STATUS_EXTRANEOUS_INFORMATION";
    case 0x80000018: return "STATUS_RXACT_COMMIT_NECESSARY";
    case 0x8000001A: return "STATUS_NO_MORE_ENTRIES";
    case 0x8000001B: return "STATUS_FILEMARK_DETECTED";
    case 0x8000001C: return "STATUS_MEDIA_CHANGED";
    case 0x8000001D: return "STATUS_BUS_RESET";
    case 0x8000001E: return "STATUS_END_OF_MEDIA";
    case 0x8000001F: return "STATUS_BEGINNING_OF_MEDIA";
    case 0x80000020: return "STATUS_MEDIA_CHECK";
    case 0x80000021: return "STATUS_SETMARK_DETECTED";
    case 0x80000022: return "STATUS_NO_DATA_DETECTED";
    case 0x80000023: return "STATUS_REDIRECTOR_HAS_OPEN_HANDLES";
    case 0x80000024: return "STATUS_SERVER_HAS_OPEN_HANDLES";
    case 0x80000025: return "STATUS_ALREADY_DISCONNECTED";
    case 0x80000026: return "STATUS_LONGJUMP";
    case 0x80000027: return "STATUS_CLEANER_CARTRIDGE_INSTALLED";
    case 0x80000028: return "STATUS_PLUGPLAY_QUERY_VETOED";
    case 0x80000029: return "STATUS_UNWIND_CONSOLIDATE";
    case 0x80130001: return "STATUS_CLUSTER_NODE_ALREADY_UP";
    case 0x80130002: return "STATUS_CLUSTER_NODE_ALREADY_DOWN";
    case 0x80130003: return "STATUS_CLUSTER_NETWORK_ALREADY_ONLINE";
    case 0x80130004: return "STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE";
    case 0x80130005: return "STATUS_CLUSTER_NODE_ALREADY_MEMBER";
    case 0xC0000001: return "STATUS_UNSUCCESSFUL";
    case 0xC0000002: return "STATUS_NOT_IMPLEMENTED";
    case 0xC0000003: return "STATUS_INVALID_INFO_CLASS";
    case 0xC0000004: return "STATUS_INFO_LENGTH_MISMATCH";
    case 0xC0000005: return "STATUS_ACCESS_VIOLATION";
    case 0xC0000006: return "STATUS_IN_PAGE_ERROR";
    case 0xC0000007: return "STATUS_PAGEFILE_QUOTA";
    case 0xC0000008: return "STATUS_INVALID_HANDLE";
    case 0xC0000009: return "STATUS_BAD_INITIAL_STACK";
    case 0xC000000A: return "STATUS_BAD_INITIAL_PC";
    case 0xC000000B: return "STATUS_INVALID_CID";
    case 0xC000000C: return "STATUS_TIMER_NOT_CANCELED";
    case 0xC000000D: return "STATUS_INVALID_PARAMETER";
    case 0xC000000E: return "STATUS_NO_SUCH_DEVICE";
    case 0xC000000F: return "STATUS_NO_SUCH_FILE";
    case 0xC0000010: return "STATUS_INVALID_DEVICE_REQUEST";
    case 0xC0000011: return "STATUS_END_OF_FILE";
    case 0xC0000012: return "STATUS_WRONG_VOLUME";
    case 0xC0000013: return "STATUS_NO_MEDIA_IN_DEVICE";
    case 0xC0000014: return "STATUS_UNRECOGNIZED_MEDIA";
    case 0xC0000015: return "STATUS_NONEXISTENT_SECTOR";
    case 0xC0000016: return "STATUS_MORE_PROCESSING_REQUIRED";
    case 0xC0000017: return "STATUS_NO_MEMORY";
    case 0xC0000018: return "STATUS_CONFLICTING_ADDRESSES";
    case 0xC0000019: return "STATUS_NOT_MAPPED_VIEW";
    case 0xC000001A: return "STATUS_UNABLE_TO_FREE_VM";
    case 0xC000001B: return "STATUS_UNABLE_TO_DELETE_SECTION";
    case 0xC000001C: return "STATUS_INVALID_SYSTEM_SERVICE";
    case 0xC000001D: return "STATUS_ILLEGAL_INSTRUCTION";
    case 0xC000001E: return "STATUS_INVALID_LOCK_SEQUENCE";
    case 0xC000001F: return "STATUS_INVALID_VIEW_SIZE";
    case 0xC0000020: return "STATUS_INVALID_FILE_FOR_SECTION";
    case 0xC0000021: return "STATUS_ALREADY_COMMITTED";
    case 0xC0000022: return "STATUS_ACCESS_DENIED";
    case 0xC0000023: return "STATUS_BUFFER_TOO_SMALL";
    case 0xC0000024: return "STATUS_OBJECT_TYPE_MISMATCH";
    case 0xC0000025: return "STATUS_NONCONTINUABLE_EXCEPTION";
    case 0xC0000026: return "STATUS_INVALID_DISPOSITION";
    case 0xC0000027: return "STATUS_UNWIND";
    case 0xC0000028: return "STATUS_BAD_STACK";
    case 0xC0000029: return "STATUS_INVALID_UNWIND_TARGET";
    case 0xC000002A: return "STATUS_NOT_LOCKED";
    case 0xC000002B: return "STATUS_PARITY_ERROR";
    case 0xC000002C: return "STATUS_UNABLE_TO_DECOMMIT_VM";
    case 0xC000002D: return "STATUS_NOT_COMMITTED";
    case 0xC000002E: return "STATUS_INVALID_PORT_ATTRIBUTES";
    case 0xC000002F: return "STATUS_PORT_MESSAGE_TOO_LONG";
    case 0xC0000030: return "STATUS_INVALID_PARAMETER_MIX";
    case 0xC0000031: return "STATUS_INVALID_QUOTA_LOWER";
    case 0xC0000032: return "STATUS_DISK_CORRUPT_ERROR";
    case 0xC0000033: return "STATUS_OBJECT_NAME_INVALID";
    case 0xC0000034: return "STATUS_OBJECT_NAME_NOT_FOUND";
    case 0xC0000035: return "STATUS_OBJECT_NAME_COLLISION";
    case 0xC0000037: return "STATUS_PORT_DISCONNECTED";
    case 0xC0000038: return "STATUS_DEVICE_ALREADY_ATTACHED";
    case 0xC0000039: return "STATUS_OBJECT_PATH_INVALID";
    case 0xC000003A: return "STATUS_OBJECT_PATH_NOT_FOUND";
    case 0xC000003B: return "STATUS_OBJECT_PATH_SYNTAX_BAD";
    case 0xC000003C: return "STATUS_DATA_OVERRUN";
    case 0xC000003D: return "STATUS_DATA_LATE_ERROR";
    case 0xC000003E: return "STATUS_DATA_ERROR";
    case 0xC000003F: return "STATUS_CRC_ERROR";
    case 0xC0000040: return "STATUS_SECTION_TOO_BIG";

⌨️ 快捷键说明

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