2012-08-01 122 views
1

我正在使用以下函數來讀取包含用戶定義流的.dmp文件。現在我的問題是,在我的轉儲中,存在具有相同流類型的多個流。MiniDumpReadDumpStream和多個相同類型的流

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

至於我在我的測試中看到,上面的功能將只返回給我這樣流的非常首次出現,忽略所有其他的,因爲它通過其類型檢索流,而不是指數次數。 如果我使用dumpchk.exe實用程序分析我的轉儲文件,它會正確顯示所有其他存在的流​​。此外,我能夠用我自己的閱讀器代碼正確地讀出流,這很醜陋,所以我不想使用它。

所以只是爲了澄清。這是MiniDumpReadDumpStream函數的問題嗎?還是有一條規則可以使用相同類型來記錄多個流?我無法在文檔(msdn)中找到這樣的說明... 或者有沒有辦法讓函數返回其他流?

期待您的答案......

最好的問候, 費邊

回答

0

由於事實上,在MINIDUMP_STREAM_TYPE列舉的流類型是唯一的,這些類型出現0或1次在同一傾倒。自定義數據流(MINIDUMP_USER_STREAM)可以在同一個轉儲中存在0次或多次。無法使用MiniDumpReadDumpStream爲自定義流編制索引。由於自定義流的大小是衆所周知的 - 由您,將這些以編程方式放入轉儲的人員 - 您可以通過將光標移動到內存中來解決所有這些問題,一旦您使用MiniDumpReadDumpStream檢索到第一個自定義流。

+0

謝謝你很好,先生。這當然有幫助。 – 2012-08-03 12:04:50

+0

@FabianCordes:不客氣!實際上,您可以完全忽略MiniDumpReadDumpStream API並轉到RAW結構訪問。由於所有結構都有文檔記錄且不會更改,因此可以遍歷(並索引)轉儲文件的內容。我做到了,工作得很好。 – mox 2012-08-03 13:29:39

相關問題