[ros-diffs] [fireball] 43247: [fastfat_new] - Open a file in FatiOpenExistingFile by means of FullFAT library. - Fix incorrect fullfat placement in fasfat.rbuild. - Hack StreamFileObject to be 5Gb in length instead of 512 bytes. It'll be set to the size of an underlying physical device later. - Add FF file handle to FCB structure.

fireball at svn.reactos.org fireball at svn.reactos.org
Thu Oct 1 15:21:28 CEST 2009


Author: fireball
Date: Thu Oct  1 15:21:28 2009
New Revision: 43247

URL: http://svn.reactos.org/svn/reactos?rev=43247&view=rev
Log:
[fastfat_new]
- Open a file in FatiOpenExistingFile by means of FullFAT library.
- Fix incorrect fullfat placement in fasfat.rbuild.
- Hack StreamFileObject to be 5Gb in length instead of 512 bytes. It'll be set to the size of an underlying physical device later.
- Add FF file handle to FCB structure.

Modified:
    trunk/reactos/drivers/filesystems/fastfat_new/create.c
    trunk/reactos/drivers/filesystems/fastfat_new/fastfat.rbuild
    trunk/reactos/drivers/filesystems/fastfat_new/fat.c
    trunk/reactos/drivers/filesystems/fastfat_new/fatstruc.h
    trunk/reactos/drivers/filesystems/fastfat_new/fullfat.c
    trunk/reactos/drivers/filesystems/fastfat_new/rw.c

Modified: trunk/reactos/drivers/filesystems/fastfat_new/create.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat_new/create.c?rev=43247&r1=43246&r2=43247&view=diff
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat_new/create.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat_new/create.c [iso-8859-1] Thu Oct  1 15:21:28 2009
@@ -59,7 +59,10 @@
                      IN BOOLEAN IsDosName)
 {
     IO_STATUS_BLOCK Iosb = {{0}};
+    OEM_STRING AnsiName;
+    CHAR AnsiNameBuf[512];
     PFCB Fcb;
+    NTSTATUS Status;
 
     /* Check for create file option and fail */
     if (CreateDisposition == FILE_CREATE)
@@ -72,6 +75,20 @@
 
     /* Create a new FCB for this file */
     Fcb = FatCreateFcb(IrpContext, Vcb, ParentDcb);
+
+    /* Convert the name to ANSI */
+    AnsiName.Buffer = AnsiNameBuf;
+    AnsiName.Length = 0;
+    AnsiName.MaximumLength = sizeof(AnsiNameBuf);
+    RtlZeroMemory(AnsiNameBuf, sizeof(AnsiNameBuf));
+    Status = RtlUpcaseUnicodeStringToCountedOemString(&AnsiName, &FileObject->FileName, FALSE);
+    if (!NT_SUCCESS(Status))
+    {
+        ASSERT(FALSE);
+    }
+
+    /* Open the file with FullFAT */
+    Fcb->FatHandle = FF_Open(Vcb->Ioman, AnsiName.Buffer, FF_MODE_READ, NULL);
 
     // TODO: Check if overwrite is needed
 

Modified: trunk/reactos/drivers/filesystems/fastfat_new/fastfat.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat_new/fastfat.rbuild?rev=43247&r1=43246&r2=43247&view=diff
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat_new/fastfat.rbuild [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat_new/fastfat.rbuild [iso-8859-1] Thu Oct  1 15:21:28 2009
@@ -4,10 +4,10 @@
 	<bootstrap installbase="$(CDOUTPUT)" />
 	<include base="fastfatn">.</include>
 	<include base="ReactOS">include/reactos/libs/fullfat</include>
+	<library>fullfat</library>
 	<library>ntoskrnl</library>
 	<library>hal</library>
 	<library>pseh</library>
-	<library>fullfat</library>
 	<file>blockdev.c</file>
 	<file>cleanup.c</file>
 	<file>close.c</file>

Modified: trunk/reactos/drivers/filesystems/fastfat_new/fat.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat_new/fat.c?rev=43247&r1=43246&r2=43247&view=diff
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat_new/fat.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat_new/fat.c [iso-8859-1] Thu Oct  1 15:21:28 2009
@@ -484,10 +484,13 @@
     Vcb->StreamFileObject->SectionObjectPointer = &Vcb->SectionObjectPointers;
 
     /* At least full boot sector should be available */
-    Vcb->Header.FileSize.QuadPart = sizeof(PACKED_BOOT_SECTOR);
-    Vcb->Header.AllocationSize.QuadPart = sizeof(PACKED_BOOT_SECTOR);
+    //Vcb->Header.FileSize.QuadPart = sizeof(PACKED_BOOT_SECTOR);
+    //Vcb->Header.AllocationSize.QuadPart = sizeof(PACKED_BOOT_SECTOR);
     Vcb->Header.ValidDataLength.HighPart = MAXLONG;
     Vcb->Header.ValidDataLength.LowPart = MAXULONG;
+
+    Vcb->Header.AllocationSize.QuadPart = Int32x32To64(5*1024, 1024*1024); //HACK: 5 Gb
+    Vcb->Header.FileSize.QuadPart = Vcb->Header.AllocationSize.QuadPart;
 
     /* Set VCB to a good condition */
     Vcb->Condition = VcbGood;

Modified: trunk/reactos/drivers/filesystems/fastfat_new/fatstruc.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat_new/fatstruc.h?rev=43247&r1=43246&r2=43247&view=diff
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat_new/fatstruc.h [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat_new/fatstruc.h [iso-8859-1] Thu Oct  1 15:21:28 2009
@@ -279,6 +279,8 @@
     UCHAR DirentFatFlags;
     /* File basic info */
     FILE_BASIC_INFORMATION BasicInfo;
+    /* FullFAT file handle */
+    FF_FILE *FatHandle;
     union
     {
         struct

Modified: trunk/reactos/drivers/filesystems/fastfat_new/fullfat.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat_new/fullfat.c?rev=43247&r1=43246&r2=43247&view=diff
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat_new/fullfat.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat_new/fullfat.c [iso-8859-1] Thu Oct  1 15:21:28 2009
@@ -58,6 +58,7 @@
                   &Bcb,
                   &Buffer))
     {
+        ASSERT(FALSE);
         /* Mapping failed */
         return 0;
     }

Modified: trunk/reactos/drivers/filesystems/fastfat_new/rw.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat_new/rw.c?rev=43247&r1=43246&r2=43247&view=diff
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat_new/rw.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat_new/rw.c [iso-8859-1] Thu Oct  1 15:21:28 2009
@@ -38,8 +38,8 @@
     
     OpenType = FatDecodeFileObject(FileObject, &Vcb, &Fcb, &Ccb);
 
-    DPRINT1("FatiRead() Fcb %p, Name %wZ, Offset %d, Length %d\n",
-        Fcb, &FileObject->FileName, ByteOffset.LowPart, NumberOfBytes);
+    DPRINT1("FatiRead() Fcb %p, Name %wZ, Offset %d, Length %d, Handle %p\n",
+        Fcb, &FileObject->FileName, ByteOffset.LowPart, NumberOfBytes, Fcb->FatHandle);
     return STATUS_NOT_IMPLEMENTED;
 }
 




More information about the Ros-diffs mailing list