我使用以下函数来读取包含用户定义流的.dmp文件。现在我的问题是在我的转储中,存在多个具有相同流类型的流。
BOOL WINAPI MiniDumpReadDumpStream(
__in PVOID BaseOfDump,
__in ULONG StreamNumber,
__out PMINIDUMP_DIRECTORY *Dir,
__out PVOID *StreamPointer,
__out ULONG *StreamSize
);
就我在测试中看到的那样,上面的函数只会返回给我第一次出现这样的流,忽略所有其他流,因为它按类型检索流,而不是出现的索引。 如果我使用dumpchk.exe实用程序分析我的转储文件,它会正确显示所有其他存在的流。此外,我能够使用我自己的读取器代码正确地读出流,这非常难看,所以我真的不想使用它。
所以只是为了澄清。这是MiniDumpReadDumpStream函数的一个问题,还是有一个规则可以用相同的类型转发多个流?我无法在文档中找到这样的说明(msdn)... 或者有没有办法让函数返回其他流?
期待您的回答......
祝你好运, 费边
答案 0 :(得分:0)
事实上,MINIDUMP_STREAM_TYPE中枚举的流类型是唯一的,这些类型在同一个转储中出现0或1次。自定义流(MINIDUMP_USER_STREAM)可以在同一转储中存在0次或多次。无法使用MiniDumpReadDumpStream索引自定义流。由于自定义流的大小众所周知 - 由您以编程方式将这些流放入转储中 - 您可以通过使用MiniDumpReadDumpStream检索第一个自定义流后将光标移动到内存中来解决所有这些问题。