另一个进程文件句柄上的SetFilePointer()失败

时间:2012-01-07 09:29:18

标签: c# windows winapi 64-bit

我正在为第三方不可触及的控制台可执行文件制作GUI。此可执行文件读取输入文件,处理数据并生成输出文件。由于这个过程需要很长时间,我需要监控进度。

我想要做的是找到控制台可执行进程id(完成),进程id检索进程打开的文件列表(完成),然后,一旦识别出输入文件并且检索到它的句柄(完成),我想调用SetFilePointer(handle,0,currentPosition),因此它告诉我已经读取了什么文件。然后,(read / totalSize)将为我提供该过程的进度。

问题是调用SetFilePointer()总是返回0xFFFFFFFF(失败)而GetLastError()返回6(无效句柄)。有什么想法吗?

提前谢谢。

1 个答案:

答案 0 :(得分:5)

句柄属于拥有过程,只能由拥有过程操作。如果要修改另一个进程中的句柄,则需要将代码注入该进程,或使用DuplicateHandle