我需要创建一个虚拟文件系统,将 Azure 应用程序服务中的文件与本地驱动器进行双向同步。我只需要同步一些文件和文件夹到本地文件系统,并且离线时可用。当用户选择“始终保留在此设备上”菜单时,文件/文件夹应该在首次访问或同步。类似于 OneDrive 的工作方式。我找到了 Microsoft CloudMirror C++ 示例,其中有一些基本的 OneDrive 功能,但它会在启动时同步所有文件,而且首次访问时没有列出/加载。
是否可以完全使用 .NET 构建具有上述功能的虚拟文件系统?
我需要创建一个虚拟文件系统,将 Azure 应用程序服务中的文件与本地驱动器进行双向同步。我只需要同步一些文件和文件夹到本地文件系统,并且离线时可用。当用户选择“始终保留在此设备上”菜单时,文件/文件夹应该在首次访问或同步。类似于 OneDrive 的工作方式。我找到了 Microsoft CloudMirror C++ 示例,其中有一些基本的 OneDrive 功能,但它会在启动时同步所有文件,而且首次访问时没有列出/加载。
是否可以完全使用 .NET 构建具有上述功能的虚拟文件系统?
以下是你可以采取的方法,将所有代码编写为.NET:
One option is to import all required Win32 functions using extern to .NET, for example:
[DllImport("cldapi.dll", SetLastError = true, ExactSpelling = true)]
public static extern int CfGetPlaceholderStateFromFileInfo(IntPtr infoBuffer, FILE_INFO_BY_HANDLE_CLASS infoClass);
[DllImport("cldapi.dll", SetLastError = true, ExactSpelling = true)]
public static extern HRESULT CfSetPinState(IntPtr fileHandle, int pinState, int pinFlags, IntPtr overlapped);
Another option could be using this sample.
关于构建类似 OneDrive 的文件系统的一些注意事项: