有多個標誌和屬性(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. 使用打開的句柄刪除或重命名文件
- 5. 可以在打開的文件句柄上使用Linux inotify嗎?
- 6. 在skbio中使用TabularMSA打開文件句柄
- 7. 如何使用C#在文件上打開寫入句柄?
- 8. 打開文件句柄或分配標準輸出
- 9. 是否有任何RAII文件句柄已經實現?
- 10. 查找當前打開的文件句柄數(不是lsof)
- 11. 如何檢查Java程序是否保持打開文件句柄?
- 12. 無法打開的句柄
- 13. 紅寶石文件句柄管理(打開的文件太多)
- 14. 在PHP中打開文件句柄的開銷成本?
- 15. 用open打開的返回文件句柄?
- 16. execv調用後打開文件句柄會發生什麼? (C++)
- 17. 在Windows DLL中,如何獲取當前進程已打開的文件句柄?
- 18. 在打開文件之前知道文件當前是否已打開?
- 19. GlassfishESB filebc組件導致太多打開文件句柄
- 20. Python文件名,而不是標記。打開此文件並將文件句柄傳入Beautiful Soup
- 21. 是否Qt的事件偵聽器佔用的文件句柄?
- 22. 合併XPS文件留下打開的文件句柄以文檔引用
- 23. 是否有可能使用c#窗口句柄在打開的文件對話框中處理地址欄?
- 24. 檢查用fopen打開的文件是否已關閉
- 25. UFT:使用已打開的Excel文件
- 26. 打開已在使用的文件
- 27. 檢查文件是否被進程文件句柄鎖定
- 28. 如何檢查文件句柄是否仍然指向文件
- 29. 保持文件句柄打開,或根據需要重新打開?
- 30. 通過應用程序圖標打開UILocalNotification句柄?
這可能是你至少需要知道的**最有趣的標誌。這是一個沒有任何可觀察到的效果,除了作爲緩存管理器的提示之外。例如,「FILE_FLAG_OVERLAPPED」會更有趣。無論如何,你真的想要解決什麼問題? – IInspectable
有時可以觀察到的效果取決於觀察點。 :)嘗試從使用此標誌打開的文件中重新讀取會導致在特定平臺上出現很好的可觀察應用程序崩潰(取決於底層可以提供的優化級別)。如果文件是由一個無法控制的代理打開的,那麼可能存在一個問題,即應用什麼算法來最有效地處理數據(讓我們建議任何緩衝超出解決方案)。 –
這個標誌不應該有任何方式導致崩潰。這意味着一個錯誤,無論是在Windows或(更可能)您的代碼。找出並糾正錯誤可能會比這樣解決問題更好。 –