[filedisk] Allow for a file offset
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Mon, 31 May 2010 19:29:26 +0000 (15:29 -0400)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Mon, 31 May 2010 19:29:26 +0000 (15:29 -0400)
It's useful to have a base offset into a file from which
the virtual disk's sectors will be considered to start.

src/include/filedisk.h
src/winvblock/filedisk/filedisk.c

index 92affa4..ba41393 100644 (file)
@@ -33,6 +33,7 @@ winvblock__def_struct ( filedisk__type )
   winvblock__uint32 hash;
   device__free_routine prev_free;
   LIST_ENTRY tracking;
+  LARGE_INTEGER offset;
 };
 
 extern irp__handler_decl (
index eaf4789..fa0bdb4 100644 (file)
@@ -79,8 +79,12 @@ disk__io_decl (
       IoCompleteRequest ( irp, IO_NO_INCREMENT );
       return STATUS_CANCELLED;
     }
-
+  /*
+   * Calculate the offset
+   */
   offset.QuadPart = start_sector * disk_ptr->SectorSize;
+  offset.QuadPart += filedisk_ptr->offset.QuadPart;
+
   if ( mode == disk__io_mode_write )
     status =
       ZwWriteFile ( filedisk_ptr->file, NULL, NULL, NULL, &io_status, buffer,