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

📄 debug.c

📁 FSD file system driver
💻 C
📖 第 1 页 / 共 5 页
字号:
							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 + -