Dump文件数据存储格式(三)

五、杂项信息流(MiscInfoStream)

在系统信息流后紧挨着的就是杂项信息流。而系统信息流信息如下

0xEC+0n56=0x124

而杂项信息流如下:

可知偏移是0x124,即证明杂项信息流是紧挨着系统信息流,大小有1364字节。

MiscInfoStream包含各种信息。数据结构如下:

typedef struct _MINIDUMP_MISC_INFO_5 {
    ULONG32 SizeOfInfo;
    ULONG32 Flags1;
    ULONG32 ProcessId;
    ULONG32 ProcessCreateTime;
    ULONG32 ProcessUserTime;
    ULONG32 ProcessKernelTime;
    ULONG32 ProcessorMaxMhz;
    ULONG32 ProcessorCurrentMhz;
    ULONG32 ProcessorMhzLimit;
    ULONG32 ProcessorMaxIdleState;
    ULONG32 ProcessorCurrentIdleState;
    ULONG32 ProcessIntegrityLevel;
    ULONG32 ProcessExecuteFlags;
    ULONG32 ProtectedProcess;
    ULONG32 TimeZoneId;
    TIME_ZONE_INFORMATION TimeZone;
    WCHAR   BuildString[MAX_PATH];
    WCHAR   DbgBldStr[40];
    XSTATE_CONFIG_FEATURE_MSC_INFO XStateData;    
    ULONG32 ProcessCookie;
} MINIDUMP_MISC_INFO_5, *PMINIDUMP_MISC_INFO_5;

typedef struct _TIME_ZONE_INFORMATION {
  LONG       Bias;
  WCHAR      StandardName[32];
  SYSTEMTIME StandardDate;
  LONG       StandardBias;
  WCHAR      DaylightName[32];
  SYSTEMTIME DaylightDate;
  LONG       DaylightBias;
} TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;

typedef struct _XSTATE_CONFIG_FEATURE_MSC_INFO
{
    ULONG32 SizeOfInfo;
    ULONG32 ContextSize;
    ULONG64 EnabledFeatures;                
    XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES];
} XSTATE_CONFIG_FEATURE_MSC_INFO, *PXSTATE_CONFIG_FEATURE_MSC_INFO;

其实MINIDUMP_MISC_INFO_5是从MINIDUMP_MISC_INFO、MINIDUMP_MISC_INFO_1、MINIDUMP_MISC_INFO_2、MINIDUMP_MISC_INFO_3、MINIDUMP_MISC_INFO_4等结构随着版本的变化发展而来,下面简单介绍下MINIDUMP_MISC_INFO_5结构的成员,

SizeOfInfo

结构的大小,以字节为单位。

Flags1

指示此结构的有效成员的标志。此成员可以是以下一个或多个值。

ValueMeaning
MINIDUMP_MISC1_PROCESS_ID
0x00000001
ProcessId is used.
MINIDUMP_MISC1_PROCESS_TIMES
0x00000002
ProcessCreateTime, ProcessKernelTime, and ProcessUserTime are used.
MINIDUMP_MISC1_PROCESSOR_POWER_INFO
0x00000004
ProcessorMaxMhz, ProcessorCurrentMhz, ProcessorMhzLimit, ProcessorMaxIdleState, and ProcessorCurrentIdleState are used.

ProcessId

进程的标识符。如果Flags1未指定MINIDUMP_MISC1_PROCESS_ID,则此成员未使用。

ProcessCreateTime

进程的创建时间,采用time_t格式。如果Flags1未指定MINIDUMP_MISC1_PROCESS_TIMES,则此成员未使用。

ProcessUserTime

进程在用户模式下执行的时间,以秒为单位。确定进程的每个线程在用户模式下执行的时间,然后将所有这些时间相加以获得该值。如果Flags1未指定MINIDUMP_MISC1_PROCESS_TIMES,则此成员未使用。

ProcessKernelTime

进程在内核模式下执行的时间,以秒为单位。确定进程的每个线程在内核模式下执行的时间,然后将所有这些时间相加以获得该值。如果Flags1未指定MINIDUMP_MISC1_PROCESS_TIMES,则此成员未使用。

ProcessorMaxMhz

系统处理器的最大指定时钟频率,以MHz为单位。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。

ProcessorCurrentMhz

处理器时钟频率,以兆赫为单位。此数字是指定的最大处理器时钟频率乘以当前处理器限制。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。

ProcessorMhzLimit

处理器时钟频率的限制,以兆赫为单位。此数字是指定的最大处理器时钟频率乘以当前处理器热限制。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。

ProcessorMaxIdleState

处理器的最大空闲状态。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。

ProcessorCurrentIdleState

处理器的当前空闲状态。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员将未使用。

ProcessIntegrityLevel

对于属于普通身份验证用户的进程,Windows通常使用“SECURITY_MANDATORY_media_RID”(0x2000),对于提升的进程,通常使用“SECURITY_MANDATORY_HIGH_RID”(0x3000)。
ProcessExecuteFlags

简要说明进程的执行标志。这似乎是由“NtQueryInformationProcess()返回的
ProtectedProcess

进程是否受保护。
TimeZoneId

快照时系统所在位置是否夏令时。可取如下值

`0` if the location does not observe daylight saving time at all. The TIME_ZONE_INFORMATION::StandardName field of #TimeZoneId contains the time zone name.
`1` if the location observes daylight saving time, but standard time  was in effect at the time of the snapshot. The TIME_ZONE_INFORMATION::StandardName field of #TimeZoneId contains the time zone name.
`2` if the location observes daylight saving time, and it was in effect at the time of the snapshot. The TIME_ZONE_INFORMATION::DaylightName  field of #TimeZoneId contains the time zone name.

TimeZone

有关系统位置的时区的信息。

BuildString[MAX_PATH]

操作系统的“构建字符串”,标识操作系统的特定内部版本的字符串。这个字符串是UTF-16编码的,由UTF-16`NUL`代码单元终止。在Windows 8.1(NT 6.3)上,这是“6.3.9600.17031 (winblue_gdr.140221-1952)
DbgBldStr[40]

小型转储生产者的“构建字符串”,一个标识生成小型转储的模块的字符串文件。这个字符串是UTF-16编码的,并以UTF-16`NUL`代码结尾单位。开Windows 8.1(NT 6.3),可能“dbghelp.i386,6.3.9600.16520”或dbghelp.amd64,6.3.9600.16520“取决于CPU架构。
XStateData

有关存储在CPU特定上下文中的XSAVE托管状态的信息结构。这个信息可用于定位特定于CPU的上下文结构中的状态组件。
ProcessCookie

进程cookie

原文地址:https://www.cnblogs.com/yilang/p/13820291.html