📄 debug.c
字号:
#ifndef _GNU_NTIFS_
RfsdPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_USER_FS_REQUEST FsControlCode: %#x\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.FileSystemControl.FsControlCode
));
#else
RfsdPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_USER_FS_REQUEST FsControlCode: %#x\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.FileSystemControl.FsControlCode
));
#endif
} else if (IoStackLocation->MinorFunction == IRP_MN_MOUNT_VOLUME) {
RfsdPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_MOUNT_VOLUME DeviceObject: %#x\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.MountVolume.DeviceObject
));
} else if (IoStackLocation->MinorFunction == IRP_MN_VERIFY_VOLUME) {
RfsdPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_VERIFY_VOLUME DeviceObject: %#x\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.VerifyVolume.DeviceObject
));
} else if (IoStackLocation->MinorFunction == IRP_MN_LOAD_FILE_SYSTEM) {
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_LOAD_FILE_SYSTEM\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName
));
}
#if (_WIN32_WINNT >= 0x0500)
else if (IoStackLocation->MinorFunction == IRP_MN_KERNEL_CALL) {
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_KERNEL_CALL\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName
));
}
#endif // (_WIN32_WINNT >= 0x0500)
else {
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s Unknown minor function %#x\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->MinorFunction
));
}
break;
case IRP_MJ_DEVICE_CONTROL:
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IoControlCode: %#x\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.DeviceIoControl.IoControlCode
));
break;
case IRP_MJ_LOCK_CONTROL:
if (IoStackLocation->MinorFunction & IRP_MN_LOCK) {
#ifndef _GNU_NTIFS_
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_LOCK Offset: %I64xh Length: %I64xh Key: %u %s%s\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.LockControl.ByteOffset.QuadPart,
IoStackLocation->Parameters.LockControl.Length->QuadPart,
IoStackLocation->Parameters.LockControl.Key,
(IoStackLocation->Flags & SL_FAIL_IMMEDIATELY ? "SL_FAIL_IMMEDIATELY " : ""),
(IoStackLocation->Flags & SL_EXCLUSIVE_LOCK ? "SL_EXCLUSIVE_LOCK " : "")
));
#else
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_LOCK Offset: %I64xh Length: %I64xh Key: %u %s%s\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.LockControl.ByteOffset.QuadPart,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.LockControl.Length->QuadPart,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.LockControl.Key,
(IoStackLocation->Flags & SL_FAIL_IMMEDIATELY ? "SL_FAIL_IMMEDIATELY " : ""),
(IoStackLocation->Flags & SL_EXCLUSIVE_LOCK ? "SL_EXCLUSIVE_LOCK " : "")
));
#endif
} else if (IoStackLocation->MinorFunction & IRP_MN_UNLOCK_SINGLE) {
#ifndef _GNU_NTIFS_
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_UNLOCK_SINGLE Offset: %I64xh Length: %I64xh Key: %u\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.LockControl.ByteOffset.QuadPart,
IoStackLocation->Parameters.LockControl.Length->QuadPart,
IoStackLocation->Parameters.LockControl.Key
));
#else
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_UNLOCK_SINGLE Offset: %I64xh Length: %I64xh Key: %u\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.LockControl.ByteOffset.QuadPart,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.LockControl.Length->QuadPart,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.LockControl.Key
));
#endif
} else if (IoStackLocation->MinorFunction & IRP_MN_UNLOCK_ALL) {
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_UNLOCK_ALL\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName
));
} else if (IoStackLocation->MinorFunction & IRP_MN_UNLOCK_ALL_BY_KEY) {
#ifndef _GNU_NTIFS_
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_UNLOCK_ALL_BY_KEY Key: %u\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.LockControl.Key
));
#else
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_UNLOCK_ALL_BY_KEY Key: %u\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.LockControl.Key
));
#endif
} else {
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s Unknown minor function %#x\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->MinorFunction
));
}
break;
case IRP_MJ_CLEANUP:
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName
));
break;
case IRP_MJ_SHUTDOWN:
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName
));
break;
#if (_WIN32_WINNT >= 0x0500)
case IRP_MJ_PNP:
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName
));
#endif // (_WIN32_WINNT >= 0x0500)
break;
default:
RfsdPrintNoIndent((
DBG_TRACE, "%s %s %s\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName
));
}
}
VOID
RfsdDbgPrintComplete (IN PIRP Irp, IN BOOLEAN bPrint)
{
PIO_STACK_LOCATION IoStackLocation;
if (!Irp)
return;
if (Irp->IoStatus.Status != STATUS_SUCCESS) {
IoStackLocation = IoGetCurrentIrpStackLocation(Irp);
if (bPrint) {
RfsdPrintNoIndent((
DBG_TRACE, "%s %s Status: %s (%#x).\n",
RfsdGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
RfsdNtStatusToString(Irp->IoStatus.Status),
Irp->IoStatus.Status
));
}
}
}
PUCHAR
RfsdNtStatusToString ( 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 0x00010001: return "DBG_EXCEPTION_HANDLED";
case 0x00010002: return "DBG_CONTINUE";
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";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -