コード例 #1
0
ファイル: MegaFSHook.cs プロジェクト: acdra1n/megafuse
 public override NtStatus WriteFile(string fileName, byte[] buffer, out int bytesWritten, long offset, DokanFileInfo info)
 {
     if (!FilesystemStruct.ContainsKey(fileName))
     {
         bytesWritten = 0;
         return(DokanResult.FileNotFound);
     }
     if (info.Context == null)
     {
         using (var stream = new MemoryStream())
         {
             try
             {
                 MegaClient.Upload(stream, Path.GetFileName("R:" + fileName), NodeList.Single(x => x.Id == FilesystemStruct[fileName].ParentId));
                 stream.Position = offset;
             }
             catch (Exception)
             {
             }
             bytesWritten = (int)stream.Length;
             stream.Write(buffer, 0, buffer.Length);
         }
     }
     else
     {
         var stream = info.Context as Stream;
         lock (stream)
         {
             stream.Position = offset;
             stream.Write(buffer, 0, buffer.Length);
             bytesWritten = (int)stream.Length;
         }
     }
     return(DokanResult.Success);
 }