1

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

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

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

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

期待您的回答...

最好的问候,法比安

4

1 回答 1

0

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

于 2012-08-02T18:42:07.560 回答