MiniDumpReadDumpStream和多个相同类型的流

时间:2012-08-01 16:42:56

标签: winapi dump

我使用以下函数来读取包含用户定义流的.dmp文件。现在我的问题是在我的转储中,存在多个具有相同流类型的流。

BOOL WINAPI MiniDumpReadDumpStream(
  __in   PVOID BaseOfDump,
  __in   ULONG StreamNumber,
  __out  PMINIDUMP_DIRECTORY *Dir,
  __out  PVOID *StreamPointer,
  __out  ULONG *StreamSize
);

就我在测试中看到的那样,上面的函数只会返回给我第一次出现这样的流,忽略所有其他流,因为它按类型检索流,而不是出现的索引。 如果我使用dumpchk.exe实用程序分析我的转储文件,它会正确显示所有其他存在的流​​。此外,我能够使用我自己的读取器代码正确地读出流,这非常难看,所以我真的不想使用它。

所以只是为了澄清。这是MiniDumpReadDumpStream函数的一个问题,还是有一个规则可以用相同的类型转发多个流?我无法在文档中找到这样的说明(msdn)... 或者有没有办法让函数返回其他流?

期待您的回答......

祝你好运, 费边

1 个答案:

答案 0 :(得分:0)

事实上,MINIDUMP_STREAM_TYPE中枚举的流类型是唯一的,这些类型在同一个转储中出现0或1次。自定义流(MINIDUMP_USER_STREAM)可以在同一转储中存在0次或多次。无法使用MiniDumpReadDumpStream索引自定义流。由于自定义流的大小众所周知 - 由您以编程方式将这些流放入转储中 - 您可以通过使用MiniDumpReadDumpStream检索第一个自定义流后将光标移动到内存中来解决所有这些问题。