Пример #1
0
 public void Truncate(long size)
 {
     if (Win32NativeFileMethods.FlushFileBuffers(_handle) == false)
     {
         throw new Win32Exception(Marshal.GetLastWin32Error(), "Failed to sync for " + _filename);
     }
     Win32NativeFileMethods.SetFileLength(_handle, size);
 }
Пример #2
0
 public static unsafe void WriteFileHeader(FileHeader *header, string path)
 {
     using (var fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
     {
         var ptr       = (byte *)header;
         int remaining = sizeof(FileHeader);
         while (remaining > 0)
         {
             int read;
             if (Win32NativeFileMethods.WriteFile(fs.SafeFileHandle, ptr, remaining, out read, null) == false)
             {
                 throw new Win32Exception();
             }
             ptr       += read;
             remaining -= read;
         }
         Win32NativeFileMethods.FlushFileBuffers(fs.SafeFileHandle);
     }
 }
Пример #3
0
 public static unsafe void WriteFileHeader(FileHeader *header, VoronPathSetting path)
 {
     using (var fs = SafeFileStream.Create(path.FullPath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read, 4096, FileOptions.None))
     {
         var ptr       = (byte *)header;
         int remaining = sizeof(FileHeader);
         while (remaining > 0)
         {
             int written;
             if (Win32NativeFileMethods.WriteFile(fs.SafeFileHandle, ptr, remaining, out written, null) == false)
             {
                 throw new Win32Exception(Marshal.GetLastWin32Error(), "Failed to write to file " + path);
             }
             ptr       += written;
             remaining -= written;
         }
         if (Win32NativeFileMethods.FlushFileBuffers(fs.SafeFileHandle) == false)
         {
             throw new Win32Exception(Marshal.GetLastWin32Error(), "Failed to Flush File Buffers (sync) of file " + path);
         }
     }
 }