[ros-diffs] [ros-arm-bringup] 34602: - Finish implementing RamdiskCreateDiskDevice -- we should now have a working ramdisk drive that should receive read/write requests.

ros-arm-bringup at svn.reactos.org ros-arm-bringup at svn.reactos.org
Sun Jul 20 06:39:01 CEST 2008


Author: ros-arm-bringup
Date: Sat Jul 19 23:39:01 2008
New Revision: 34602

URL: http://svn.reactos.org/svn/reactos?rev=34602&view=rev
Log:
- Finish implementing RamdiskCreateDiskDevice -- we should now have a working ramdisk drive that should receive read/write requests.

Modified:
    trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c

Modified: trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c?rev=34602&r1=34601&r2=34602&view=diff
==============================================================================
--- trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c [iso-8859-1] Sat Jul 19 23:39:01 2008
@@ -81,6 +81,9 @@
     LONGLONG DiskLength;
     LONG DiskOffset;
     WCHAR DriveLetter;
+    ULONG BytesPerSector;
+    ULONG SectorsPerTrack;
+    ULONG NumberOfHeads;
 } RAMDISK_DRIVE_EXTENSION, *PRAMDISK_DRIVE_EXTENSION;
 
 ULONG MaximumViewLength;
@@ -491,7 +494,43 @@
         DeviceName.Buffer = NULL;
         SymbolicLinkName.Buffer = NULL;
         GuidString.Buffer = NULL;
-	}
+        
+        //
+        // Only support ISO stuff for now
+        //
+        ASSERT(Input->Options.ExportAsCd == TRUE);
+        ASSERT(Input->DiskType == FILE_DEVICE_CD_ROM_FILE_SYSTEM);
+        
+        //
+        // Setup partition parameters
+        //
+        DriveExtension->BytesPerSector = 2048; // 512 for Disk
+        DriveExtension->SectorsPerTrack = 32; // 128 for disk
+        DriveExtension->NumberOfHeads = 64; // 16 for disk
+        
+        //
+        // Acquire the disk lock
+        //
+        KeEnterCriticalRegion();
+        ExAcquireFastMutex(&DeviceExtension->DiskListLock);
+        
+        //
+        // Insert us
+        //
+        InsertTailList(&DeviceExtension->DiskList, &DriveExtension->DiskList);
+        
+        //
+        // Release the lock
+        //
+        ExReleaseFastMutex(&DeviceExtension->DiskListLock);
+        KeLeaveCriticalRegion();
+        
+        //
+        // Clear init flag
+        //
+        DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+        return STATUS_SUCCESS;
+    }
     
 FailCreate:
     UNIMPLEMENTED;



More information about the Ros-diffs mailing list