2009-07-03 99 views
1

我有兩個手柄,它們是從同一個文件中創建的文件操作,問題有關Windows

在這樣的條件下

我想寫關於使用第一手柄從1偏移至100,

和從101到200使用第二把手,從201到300使用的第一把手,

...,

我怎樣才能使這一操作似乎是一個順序寫,並沒有浪費時間

定位HANDLE中的指針?

+0

它很難給出一個很好的答案呢?爲什麼你不能使用相同的句柄,只是按順序寫入數據? – Goz 2009-07-03 14:24:08

+0

您能否提供更多信息?這聽起來像是一個多線程環境中的場景,對嗎?在你的問題中,你的意思是說,在單獨寫入之後應該只有一個順序寫入文件? – Kosi2801 2009-07-03 14:27:00

回答

1

你應該可以做異步重疊的IO。

爲了讓你開始,請看看WriteFile win32 API調用。它討論瞭如何使用帶有FLAG_FILE_OVERLAPPED標誌的CreateFile。然後調用WriteFile並傳入一個OVERLAPPED參數,該參數包含開始寫入的偏移量和一個事件句柄,該句柄在IO完成時發出信號。

另外,您可以調用WriteFileEx,它調用在IO完成時提供的函數,而不是用信號發送事件。

請注意,您應該以4K(4096)字節的塊寫入,而不是以100字節的塊寫入,因爲這是Windows中頁面文件的大小;它會大大加快你的IO速度。另請注意,這應該只需要一個文件句柄,而不是多個。