2011-08-16 65 views
8

我創建使用杜坎(.NET)庫C#的虛擬驅動器,它的工作相當不錯。Dokan/Dokan.NET(不)支持同步I/O嗎?

然而,當我嘗試從另一個應用程序驅動器讀取文件時使用同步讀取操作,如System.IO.File.ReadAllText(...)我得到一個異常。

異常的文字是:「句柄不支持同步操作到FileStream構造函數的參數可能需要改變,以表明該手柄以異步方式打開。」

所以,如果我正確地解釋這一點,.NET顯然試圖讀取在一個同步操作該文件的全部內容,但杜坎似乎並沒有允許。

但是,當使用像ReadAllText這樣的方法時,我並沒有真正控制FileStream的構建方式(不是說該方法的全部重點,畢竟只是簡單地獲取文件內容而不必打擾與流和讀者和緩衝區什麼的?)。

我能得到杜坎以支持它的文件同步I/O訪問句柄不知何故?或者我必須以某種方式生活在Dokan託管的文件中同步操作是不可能的(並且希望沒有任何應用程序可能在我的虛擬驅動器上工作取決於它們)?

+0

你設法解決這個問題。我是Dokan的新手。最新當前是0.6 – Bamboo

回答

0

有什麼理由需要同步的文件中讀取?您可以對流進行異步讀取,並在通過回調完成時進行處理。

這對不同的方式好介紹/教程進行異步文件I/O:

msdn async file io

+1

訪問類型不取決於我。我只是想提供一個任何人都可以訪問的虛擬文件系統。例如,如果訪問是通過其他人編寫的.NET應用程序發生的,而這些應用程序正好使用'ReadAllText'方法從虛擬驅動器讀取文件,那麼我就無法做到。文件系統應該能夠支持任意應用程序可能使用的任何類型的訪問。 –