public int OpenDirectory(string filename, DokanFileInfo info) { lock (_syncObj) { VirtualFileSystemResource resource = ParseFileName(filename); if (resource == null || !(resource is VirtualBaseDirectory)) { return(-DokanNet.ERROR_PATH_NOT_FOUND); } FileHandle handle = new FileHandle(resource); info.Context = handle; resource.AddFileHandle(handle); return(DokanNet.DOKAN_SUCCESS); } }
public int CreateFile(string filename, FileAccess access, FileShare share, FileMode mode, FileOptions options, DokanFileInfo info) { lock (_syncObj) { VirtualFileSystemResource resource = ParseFileName(filename); if (resource == null) { return(-DokanNet.ERROR_FILE_NOT_FOUND); } FileHandle handle = new FileHandle(resource); info.Context = handle; resource.AddFileHandle(handle); if (resource is VirtualBaseDirectory) { info.IsDirectory = true; // Necessary for the Dokan driver to set this, see docs } return(DokanNet.DOKAN_SUCCESS); } }
public NtStatus CreateFile(string filename, FileAccess access, FileShare share, FileMode mode, FileOptions options, FileAttributes attributes, DokanFileInfo info) { lock (_syncObj) { VirtualFileSystemResource resource = ParseFileName(filename); if (resource == null) { return(DokanResult.Error); } FileHandle handle = new FileHandle(resource); info.Context = handle; resource.AddFileHandle(handle); if (resource is VirtualBaseDirectory) { info.IsDirectory = true; } return(DokanResult.Success); } }