我正在使用 C# 和 Dokan 库编写我的文件系统并卡在 WriteFile 上。
public int WriteFile(
String filename,
Byte[] buffer,
ref uint writtenBytes,
long offset,
DokanFileInfo info)
{
try
{
FileStream fs = File.OpenWrite( GetFullPath(filename) , FileMode.Open );
fs.Seek(offset, SeekOrigin.Begin);
fs.Lock(offset, buffer.Length);
fs.Write(buffer, 0, buffer.Length);
fs.Unlock(offset, buffer.Length);
writtenBytes = (uint)buffer.Length;
return 0;
}
catch (Exception e)
{
Console.WriteLine("FAIL WriteFile {0}", e.Message);
return -1;
}
}
当我运行应用程序并从 Dokan 的虚拟驱动器打开 txt 文件时,添加一些行并尝试保存它。我从记事本收到错误“参数不正确”。
在代码中,我在 File.OpenWrite() 调用上遇到异常。异常是 System.IO.IOException。消息:“该进程无法访问文件 foo.txt,因为它正被另一个进程使用。”
- 文件只能用记事本打开。
- 使用 Dokan 库提供的 Mirror 示例可以观察到相同的行为
- 我在清单中为我的程序添加了管理员权限,但没有帮助
Dokan 应该作为代理工作,允许调用用户定义的 WriteFile,对吗?如果它被锁定以进行写作,我该怎么做?
请帮忙。也许您对 Dokan 有任何经验或任何线索为什么它不起作用。
我正在使用 - Win 7 Pro x64 - 64 位 Dokan 驱动程序 - 应用程序编译为 x86