我想在功能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