有多个标志和属性(dwFlagsAndAttributes)可以在使用CreateFile()调用打开文件时使用。其中一个标志是FILE_FLAG_SEQUENTIAL_SCAN。我想知道,是否有可能以某种方式检测/猜测文件句柄是否已使用此标志创建,如果您拥有的唯一东西是句柄本身并且没有关于其CreateFile参数的信息可用?是否已使用FILE_FLAG_SEQUENTIAL_SCAN标志打开文件句柄?
回答
您可以调用NtQueryInformationFile
(或从内核模式下的ZwQueryInformationFile)检索FILE_OBJECT结构。它的标记会员提供您正在查找的信息。
这确实有效。感谢您的信息;我无法自己达到。不过,我想确保我们谈论的是同样的事情。我没有看到任何FILE_OBJECT,但我看到FILE_MODE_INFORMATION结构包含模式字段(ULONG),可以包含标志FILE_SEQUENTIAL_ONLY(对于我感兴趣的CreateFile选项)以及标志FILE_NO_INTERMEDIATE_BUFFERING(中和我感兴趣的选项)。这是你的意思还是我错过了你想指出的东西? –
@ Mtm3.14:'FILE_OBJECT'结构在* wdm.h *头文件中定义。 'FO_SEQUENTIAL_ONLY'标志对应于'CreateFile'调用中的'FILE_FLAG_SEQUENTIAL_SCAN'。我不知道'FO_NO_INTERMEDIATE_BUFFERING'因素如何。 – IInspectable
- 1. 打开文件句柄时出错
- 2. File.ReadAllBytes保持文件句柄打开
- 3. 检查文件是否已经打开
- 4. 如何使用C#在文件上打开写入句柄?
- 5. 在skbio中使用TabularMSA打开文件句柄
- 6. 查找当前打开的文件句柄数(不是lsof)
- 7. 如何检查Java程序是否保持打开文件句柄?
- 8. 无法打开的句柄
- 9. 在PHP中打开文件句柄的开销成本?
- 10. 用open打开的返回文件句柄?
- 11. execv调用后打开文件句柄会发生什么? (C++)
- 12. 在打开文件之前知道文件当前是否已打开?
- 13. GlassfishESB filebc组件导致太多打开文件句柄
- 14. Python文件名,而不是标记。打开此文件并将文件句柄传入Beautiful Soup
- 15. 合并XPS文件留下打开的文件句柄以文档引用
- 16. 是否Qt的事件侦听器占用的文件句柄?
- 17. 是否有可能使用c#窗口句柄在打开的文件对话框中处理地址栏?
- 18. UFT:使用已打开的Excel文件
- 19. 打开已在使用的文件
- 20. 保持文件句柄打开,或根据需要重新打开?
- 21. 检查文件是否被进程文件句柄锁定
- 22. Windows Mobile上的打开文件句柄限制
- 23. 如何在python中获得打开文件的win32句柄?
- 24. Indy发送文件并关闭打开的句柄
- 25. 红宝石I/O - 文件句柄左打开
- 26. 列出当前打开的所有文件句柄?
- 27. Perl中打开自定义文件句柄外部命令
- 28. readline()在Perl中未打开的文件句柄错误
- 29. 如何从Python文件句柄打开.NET FileStream对象?
- 30. 关闭由.NET打开的文件句柄
这可能是你至少需要知道的**最有趣的标志。这是一个没有任何可观察到的效果,除了作为缓存管理器的提示之外。例如,“FILE_FLAG_OVERLAPPED”会更有趣。无论如何,你真的想要解决什么问题? – IInspectable
有时可以观察到的效果取决于观察点。 :)尝试从使用此标志打开的文件中重新读取会导致在特定平台上出现很好的可观察应用程序崩溃(取决于底层可以提供的优化级别)。如果文件是由一个无法控制的代理打开的,那么可能存在一个问题,即应用什么算法来最有效地处理数据(让我们建议任何缓冲超出解决方案)。 –
这个标志不应该有任何方式导致崩溃。这意味着一个错误,无论是在Windows或(更可能)您的代码。找出并纠正错误可能会比这样解决问题更好。 –