我想在功能MiniDumpWriteDump
的窗口中創建一個轉儲。問題在於該函數將Handle寫入文件以將結果寫入。我想要內存中的數據,以便我可以通過互聯網發送它。因此,我想知道是否有辦法創建一個沒有文件支持的句柄,我只需要一個指向數據的指針?我可以創建一個沒有文件的句柄嗎?
回答
您可以使用內存映射文件。請參閱:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx
您需要傳遞hFile = INVALID_HANDLE_VALUE並指定文件的最大大小。請檢查msdn瞭解詳細信息。
這似乎不太可能工作,並且當然不支持。文件映射句柄是爲了傳遞給諸如'MapViewOfFile'之類的函數,它不是文件句柄的替代品。 –
這完全是倒退。內存映射文件將文件映射到內存,以便代碼可以像讀/寫內存一樣操作,並且實際上會影響文件的內容。你想要的是相反的:一個讓代碼像讀取/寫入文件一樣行爲的句柄,但實際上它隻影響內存。 –
故障轉儲確實是進程的內存。所以,這沒有意義。你爲什麼不簡單地發送文件並在成功發送後刪除?
順便說一句,您可以壓縮文件併發送它,因爲故障轉儲通常是大文件。
我想從程序內部發送數據,因此我不想將數據寫入文件,因爲它只是浪費時間(生病必須反覆閱讀)+額外的麻煩,不必擔心在哪裏寫文件。 – chacham15
有幾種可能性。
一個會使用CreateFile
,但通過FILE_ATTRIBUTE_TEMPORARY
。這將創建一個文件,但告訴Windows試圖儘可能多地保留緩存中的文件。儘管這並不能完全避免創建文件,但如果您有足夠的內存,它通常可以消除磁盤發生的任何(或多少)I/O。
另一種可能性(儘管我從未測試過)可能會將句柄傳遞給命名(或者甚至是匿名)管道。你通常可以像寫文件一樣寫入管道,所以只要崩潰轉儲寫入程序只需要能夠將句柄傳遞給WriteFile
,機會就會很好,這樣可以很好地工作。從那裏,你可以(例如)有另一個小程序從管道讀取數據並將其寫入套接字。顯然,能夠避免額外的處理從管道轉換爲套接字是很好的,但這樣的生活有時候會是這樣。
如果您還沒有嘗試過,那麼您可能只需要將套接字句柄傳遞給崩潰轉儲書寫器即可進行測試。雖然它有一定的限制,但Windows確實支持像普通文件(或其他)處理套接字句柄。當然,沒有什麼能夠保證它能夠工作,但無論如何它可能是值得的。
該文件說要傳遞一個文件句柄,所以如果你做了其他任何事情你違反合同,並且(如果它工作的話)行爲將不可靠。
通過一個命名管道句柄。將數據傳回給自己。
- 1. 假文件句柄創建
- 2. 創建GNU C文件描述符沒有文件句柄
- 3. 我們可以創建一個沒有Qml文件的Qt exe嗎?
- 4. 我可以創建一個沒有括號的函數嗎?
- 5. 我們可以創建一個沒有域名的CDN嗎?
- 6. 我可以創建一個沒有模塊的指令嗎?
- 7. 我可以使用文件句柄代替文件名來創建DBM文件嗎?
- 8. 我可以得到一個句柄來源嗎?
- 9. 有沒有創建它的實例有一個類可以嗎?
- 10. 有沒有一個有效的句柄?
- 11. 我可以在SQL中創建一個select語句嗎?
- 12. VB.NET調用可以到窗口句柄已創建不能在一個控件調用,但手柄創建
- 13. 我們可以從xml文件創建一個類嗎?
- 14. 我可以在Linux上創建一個exe文件嗎?
- 15. c#我可以用streamwriter創建一個動態文件名嗎?
- 16. 我可以用用戶輸入創建一個t4文件嗎?
- 17. 我可以使用multile lex文件創建一個pdf嗎?
- 18. 我可以在xcode中編程創建一個.xls文件嗎?
- 19. 我可以創建一個條件文字嗎?
- 20. 我可以在Perl中找到文件句柄的文件名嗎?
- 21. 我可以操作一個我還沒有創建的窗口(進程)嗎?
- 22. 有沒有辦法用一個文件句柄
- 23. 我可以創建一個contextMenuStrip的列只有在dataGridView不是頭文件嗎?
- 24. 你可以創建一個沒有值的會話變量嗎?
- 25. 寫文件(句柄)的內容,以不同的文件句柄
- 26. 可以在打開的文件句柄上使用Linux inotify嗎?
- 27. 我可以在沒有chmod的情況下在Mac上創建一個shell腳本可執行文件嗎?
- 28. 我可以在TestNG的@Factory中創建一個新套件嗎?
- 29. 我可以使用Java創建一個沒有標題按鈕的窗口嗎?
- 30. 我可以創建一個沒有href的通用超鏈接嗎?
你可以評論關於這個問題,而不是投票結束或downvote? – chacham15
聽起來像一個XY問題。將轉儲文件保存到臨時文件然後發送文件有什麼問題? – MSalters