📄 debug.c
字号:
FileName));
}
else if (IoStackLocation->FileObject->FileName.Buffer)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %S\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
IoStackLocation->FileObject->FileName.Buffer));
}
else
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
"Unknown"));
}
break;
case IRP_MJ_CLOSE:
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName));
break;
case IRP_MJ_READ:
if (IoStackLocation->MinorFunction & IRP_MN_COMPLETE)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_COMPLETE\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName));
}
else
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s Offset: %I64xh Length: %xh %s%s%s%s%s%s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.Read.ByteOffset.QuadPart,
IoStackLocation->Parameters.Read.Length,
(IoStackLocation->MinorFunction & IRP_MN_DPC ? "IRP_MN_DPC " : " "),
(IoStackLocation->MinorFunction & IRP_MN_MDL ? "IRP_MN_MDL " : " "),
(IoStackLocation->MinorFunction & IRP_MN_COMPRESSED ? "IRP_MN_COMPRESSED " : " "),
(Irp->Flags & IRP_PAGING_IO ? "IRP_PAGING_IO " : " "),
(Irp->Flags & IRP_NOCACHE ? "IRP_NOCACHE " : " "),
(FileObject->Flags & FO_SYNCHRONOUS_IO ? "FO_SYNCHRONOUS_IO " : " ")));
}
break;
case IRP_MJ_WRITE:
if (IoStackLocation->MinorFunction & IRP_MN_COMPLETE)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_COMPLETE\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName));
}
else
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s Offset: %I64xh Length: %xh %s%s%s%s%s%s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.Read.ByteOffset.QuadPart,
IoStackLocation->Parameters.Read.Length,
(IoStackLocation->MinorFunction & IRP_MN_DPC ? "IRP_MN_DPC " : " "),
(IoStackLocation->MinorFunction & IRP_MN_MDL ? "IRP_MN_MDL " : " "),
(IoStackLocation->MinorFunction & IRP_MN_COMPRESSED ? "IRP_MN_COMPRESSED " : " "),
(Irp->Flags & IRP_PAGING_IO ? "IRP_PAGING_IO " : " "),
(Irp->Flags & IRP_NOCACHE ? "IRP_NOCACHE " : " "),
(FileObject->Flags & FO_SYNCHRONOUS_IO ? "FO_SYNCHRONOUS_IO " : " ")));
}
break;
case IRP_MJ_QUERY_INFORMATION:
FileInformationClass =
IoStackLocation->Parameters.QueryFile.FileInformationClass;
if (FileInformationClass <= FileMaximumInformation)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s %s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FileInformationClassStrings[FileInformationClass]));
}
else
{
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s Unknown FileInformationClass %u\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FileInformationClass));
}
break;
case IRP_MJ_SET_INFORMATION:
FileInformationClass =
IoStackLocation->Parameters.SetFile.FileInformationClass;
if (FileInformationClass <= FileMaximumInformation)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s %s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FileInformationClassStrings[FileInformationClass]));
}
else
{
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s Unknown FileInformationClass %u\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FileInformationClass));
}
break;
case IRP_MJ_QUERY_VOLUME_INFORMATION:
FsInformationClass =
IoStackLocation->Parameters.QueryVolume.FsInformationClass;
if (FsInformationClass <= FileFsMaximumInformation)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s %s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FsInformationClassStrings[FsInformationClass]));
}
else
{
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s Unknown FsInformationClass %u\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FsInformationClass));
}
break;
case IRP_MJ_DIRECTORY_CONTROL:
if (IoStackLocation->MinorFunction & IRP_MN_QUERY_DIRECTORY)
{
#ifndef _GNU_NTIFS_
FileInformationClass =
IoStackLocation->Parameters.QueryDirectory.FileInformationClass;
#else
FileInformationClass = ((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.QueryDirectory.FileInformationClass;
#endif
if (FileInformationClass <= FileMaximumInformation)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s %s\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FileInformationClassStrings[FileInformationClass]));
if (
#ifndef _GNU_NTIFS_
IoStackLocation->Parameters.QueryDirectory.FileName
#else
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.QueryDirectory.FileName
#endif
)
{
#ifndef _GNU_NTIFS_
FFSPrintNoIndent((
DBG_TRACE, "%s FileName: %.*S FileIndex: %x %s%s%s\n",
FFSGetCurrentProcessName(),
IoStackLocation->Parameters.QueryDirectory.FileName->Length / 2,
IoStackLocation->Parameters.QueryDirectory.FileName->Buffer,
IoStackLocation->Parameters.QueryDirectory.FileIndex,
(IoStackLocation->Flags & SL_RESTART_SCAN ? "SL_RESTART_SCAN " : ""),
(IoStackLocation->Flags & SL_RETURN_SINGLE_ENTRY ? "SL_RETURN_SINGLE_ENTRY " : ""),
((IoStackLocation->Flags & SL_INDEX_SPECIFIED) ? "SL_INDEX_SPECIFIED " : "")));
#else
FFSPrintNoIndent((
DBG_TRACE, "%s FileName: %.*S FileIndex: %x %s%s%s\n",
FFSGetCurrentProcessName(),
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.QueryDirectory.FileName->Length / 2,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.QueryDirectory.FileName->Buffer,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.QueryDirectory.FileIndex,
(IoStackLocation->Flags & SL_RESTART_SCAN ? "SL_RESTART_SCAN " : ""),
(IoStackLocation->Flags & SL_RETURN_SINGLE_ENTRY ? "SL_RETURN_SINGLE_ENTRY " : ""),
((IoStackLocation->Flags & SL_INDEX_SPECIFIED) ? "SL_INDEX_SPECIFIED " : "")));
#endif
}
else
{
#ifndef _GNU_NTIFS_
FFSPrintNoIndent((
DBG_TRACE, "%s FileName: FileIndex: %#x %s%s%s\n",
FFSGetCurrentProcessName(),
IoStackLocation->Parameters.QueryDirectory.FileIndex,
(IoStackLocation->Flags & SL_RESTART_SCAN ? "SL_RESTART_SCAN " : ""),
(IoStackLocation->Flags & SL_RETURN_SINGLE_ENTRY ? "SL_RETURN_SINGLE_ENTRY " : ""),
(IoStackLocation->Flags & SL_INDEX_SPECIFIED ? "SL_INDEX_SPECIFIED " : "")));
#else
FFSPrintNoIndent((
DBG_TRACE, "%s FileName: FileIndex: %#x %s%s%s\n",
FFSGetCurrentProcessName(),
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.QueryDirectory.FileIndex,
(IoStackLocation->Flags & SL_RESTART_SCAN ? "SL_RESTART_SCAN " : ""),
(IoStackLocation->Flags & SL_RETURN_SINGLE_ENTRY ? "SL_RETURN_SINGLE_ENTRY " : ""),
(IoStackLocation->Flags & SL_INDEX_SPECIFIED ? "SL_INDEX_SPECIFIED " : "")));
#endif
}
}
else
{
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s Unknown FileInformationClass %u\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
FileInformationClass));
}
}
else if (IoStackLocation->MinorFunction & IRP_MN_NOTIFY_CHANGE_DIRECTORY)
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s IRP_MN_NOTIFY_CHANGE_DIRECTORY\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName));
}
else
{
FFSPrintNoIndent((
DBG_TRACE, "%s %s %s Unknown minor function %#x\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->MinorFunction));
}
break;
case IRP_MJ_FILE_SYSTEM_CONTROL:
if (IoStackLocation->MinorFunction == IRP_MN_USER_FS_REQUEST)
{
#ifndef _GNU_NTIFS_
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_USER_FS_REQUEST FsControlCode: %#x\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.FileSystemControl.FsControlCode));
#else
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_USER_FS_REQUEST FsControlCode: %#x\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
((PEXTENDED_IO_STACK_LOCATION)
IoStackLocation)->Parameters.FileSystemControl.FsControlCode));
#endif
}
else if (IoStackLocation->MinorFunction == IRP_MN_MOUNT_VOLUME)
{
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_MOUNT_VOLUME DeviceObject: %#x\n",
FFSGetCurrentProcessName(),
IrpMjStrings[IoStackLocation->MajorFunction],
FileName,
IoStackLocation->Parameters.MountVolume.DeviceObject));
}
else if (IoStackLocation->MinorFunction == IRP_MN_VERIFY_VOLUME)
{
FFSPrintNoIndent((
DBG_TRACE,
"%s %s %s IRP_MN_VERIFY_VOLUME DeviceObject: %#x\n",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -