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 に答える