文章編號: 99794 - 上次校閱: 2006年11月21日 - 版次: 4.2 資訊: FILE_FLAG_WRITE_THROUGH 和 FILE_FLAG_NO_BUFFERING
結論CreateFile() FILE_FLAG_WRITE_THROUGH 旗標會使任何對該控制代碼所做直接寫入檔案而不被緩衝的寫入。資料快取 (儲存在磁碟快取中) ; 不過,它仍然直接寫入檔案。這個方法允許在該資料來滿足讀取的要求從快取資料 (如果它還在那裡) 上的讀取的作業,而不需要進行檔案讀取以取得資料。寫入呼叫不傳回直到資料寫入至檔案。這適用於遠端的寫入--網路重新導向器會傳遞 FILE_FLAG_WRITE_THROUGH 旗標至伺服器,讓伺服器知道不以滿足寫入要求,直到將資料寫入至檔案。 [FILE_FLAG_NO_BUFFERING 進一步採用這個概念的一個步驟,並排除所有緩衝先期讀取檔案和磁碟快取同時也使所有讀取都保證從檔案] 以及 [不能從任何系統緩衝區或磁碟快取。磁碟使用 [FILE_FLAG_NO_BUFFERING 時讀取和寫入必須完成磁扇區界限上並緩衝區位址必須在記憶體中的磁碟磁扇區界限對齊。 這些限制是必要的因為您傳遞給讀取或寫入 API 緩衝區直接用於 I/O 裝置層級 ; 在該層級、 緩衝區位址及磁扇區大小必須滿足任何處理器和媒體的對齊方式限制的硬體執行。 其他相關資訊Windows 95 CDFS (光碟檔案系統) 並不支援 CreateFile() FILE_FLAG_NO_BUFFERING 旗標。在 Windows 95 FSD 例如 VFAT,可能會實作、 FILE_FLAG_NO_BUFFERING 不是必要的旗標的檔案系統驅動程式和不支援的 CDFS 時。 這個程式碼片段示範如何磁扇區對齊在緩衝區中的資料,並將它傳遞給 CreateFile(): 如果您想要清除目前的邏輯磁碟機上所有開啟的檔案位置的情況下這可以透過來完成: 開啟遠端檔案在網路上時, 伺服器永遠會快取,並忽略沒有用戶端所指定的緩衝旗幟。這是經過設計規劃的。 重新導向器和伺服器無法適當地實作在網路上的 FILE_FLAG_NO_BUFFERING 完整語意。在特別不能是符合的磁區大小、 對齊磁扇區的 I/O 需求。因此時 Win32-基礎應用程式要求的 FILE_FLAG_NO_BUFFERING,, 重新導向器和伺服器將這個視為要求的 FILE_FLAG_WRITE_THROUGH。檔案不會快取在用戶端、 寫入請直接在伺服器和磁碟在伺服器上,並讀取/寫入大小在網路上完全是應用程式要求提供。不過,檔案快取在伺服器上。 無法快取在用戶端可以有一個不同的效果 I/O 類型而定。消除快取觸及數或預先,讀取,但也可能會降低的大小會傳輸和接收。在一般循序 I/O 很用戶端上的快取一個好辦法。基於小型、 隨機存取 I/O,最佳的做法就是通常不到快取。 這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:99794?
(http://support.microsoft.com/kb/99794/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方