0
我正在爲第三方不可觸摸的控制檯可執行文件創建GUI。該可執行文件讀取輸入文件,處理數據並生成輸出文件。由於該過程可能需要很長時間,所以我需要監視進度。另一個進程文件句柄上的SetFilePointer()失敗
我想要做的是找到控制檯可執行進程ID(完成),進程ID檢索進程打開的文件列表(完成),然後,一旦輸入文件被識別,它的處理是retreived(完成),我想調用SetFilePointer(handle,0,currentPosition),以便告訴我已經讀取了多少文件。然後,(read/totalSize)會給我這個過程的進展。
問題是調用SetFilePointer()總是返回0xFFFFFFFF(失敗)並且GetLastError()返回6(無效句柄)。有任何想法嗎?
預先感謝您。
是否可以使用DuplicateHandle()作爲解決方法?我的意思是,一旦我有原始文件句柄,我複製它,並調用SetFilePointer()在重複的一個。 – 2012-01-07 10:11:48
是的,我認爲這將起作用。對不起,我最初忘了這件事。我認爲如果兩個進程同時訪問文件指針,你可能會遇到線程安全問題。我知道你的修改是良性的,但是我想知道如果你想在目標應用修改文件的同時讀取文件指針,會發生什麼。 – 2012-01-07 10:18:55
它似乎工作!是的,我也想知道如果(當)兩個進程一次訪問文件指針時會發生什麼。我想我必須進行深入的測試,看看會發生什麼,但那是......另一個故事。謝謝...給我英國朋友喝啤酒... – 2012-01-07 10:55:08