- Make NTFS compile on msvc.
authorAlex Ionescu <aionescu@gmail.com>
Sat, 7 Jan 2006 06:20:59 +0000 (06:20 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Sat, 7 Jan 2006 06:20:59 +0000 (06:20 +0000)
svn path=/trunk/; revision=20651

reactos/drivers/fs/ntfs/mft.c
reactos/drivers/fs/ntfs/ntfs.h
reactos/drivers/fs/ntfs/volinfo.c

index 0ea6e0a..9cce0d5 100644 (file)
@@ -169,6 +169,7 @@ ReadAttribute (PATTRIBUTE attr,
               PDEVICE_EXTENSION Vcb,
               PDEVICE_OBJECT DeviceObject)
 {
+  PNONRESIDENT_ATTRIBUTE NresAttr = (PNONRESIDENT_ATTRIBUTE)attr;
   if (attr->Nonresident == FALSE)
     {
        memcpy (buffer,
@@ -176,7 +177,6 @@ ReadAttribute (PATTRIBUTE attr,
                ((PRESIDENT_ATTRIBUTE)attr)->ValueLength);
     }
 
-  PNONRESIDENT_ATTRIBUTE NresAttr = (PNONRESIDENT_ATTRIBUTE)attr;
   ReadExternalAttribute(Vcb, NresAttr, 0, (ULONG)(NresAttr->LastVcn) + 1,
                buffer);
 }
@@ -194,16 +194,13 @@ ReadFileRecord (PDEVICE_EXTENSION Vcb,
   PVOID p;
   ULONG BytesPerFileRecord = Vcb->NtfsInfo.BytesPerFileRecord;
   ULONG clusters = max(BytesPerFileRecord / Vcb->NtfsInfo.BytesPerCluster, 1);
-
-  p = ExAllocatePool(NonPagedPool, clusters * Vcb->NtfsInfo.BytesPerCluster);
-
   ULONGLONG vcn = index * BytesPerFileRecord / Vcb->NtfsInfo.BytesPerCluster;
-
-  ReadVCN (Vcb, Mft, AttributeData, vcn, clusters, p);
-
   LONG m = (Vcb->NtfsInfo.BytesPerCluster / BytesPerFileRecord) - 1;
-
   ULONG n = m > 0 ? (index & m) : 0;
+  
+  p = ExAllocatePool(NonPagedPool, clusters * Vcb->NtfsInfo.BytesPerCluster);
+
+  ReadVCN (Vcb, Mft, AttributeData, vcn, clusters, p);
 
   memcpy(file, (PVOID)((ULONG_PTR)p + n * BytesPerFileRecord), BytesPerFileRecord);
 
@@ -227,6 +224,7 @@ ReadExternalAttribute (PDEVICE_EXTENSION Vcb,
   ULONGLONG runcount;
   ULONG readcount;
   ULONG left;
+  ULONG n;
 
     PUCHAR bytes = (PUCHAR)buffer;
 
@@ -238,7 +236,7 @@ ReadExternalAttribute (PDEVICE_EXTENSION Vcb,
                readcount = (ULONG)min (runcount, left);
 
 
-               ULONG n = readcount * Vcb->NtfsInfo.BytesPerCluster;
+               n = readcount * Vcb->NtfsInfo.BytesPerCluster;
 
                if (lcn == 0)
                        memset(bytes, 0, n);
index d2d28c8..ccd9810 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef NTFS_H
 #define NTFS_H
 
-#include <ntddk.h>
 #include <ntifs.h>
+#include <ntddk.h>
 #include <ntdddisk.h>
 #include <ccros.h>
 
@@ -10,8 +10,8 @@
 
 
 #define CACHEPAGESIZE(pDeviceExt) \
-       ((pDeviceExt)->NtfsInfo.BytesPerCluster > PAGE_SIZE ? \
-        (pDeviceExt)->NtfsInfo.BytesPerCluster : PAGE_SIZE)
+       ((pDeviceExt)->NtfsInfo.UCHARsPerCluster > PAGE_SIZE ? \
+        (pDeviceExt)->NtfsInfo.UCHARsPerCluster : PAGE_SIZE)
 
 #ifndef TAG
 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
@@ -19,7 +19,7 @@
 
 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
 
-
+#include <pshpack1.h>
 typedef struct _BOOT_SECTOR
 {
   UCHAR     Magic[3];                          // 0x00
@@ -37,12 +37,13 @@ typedef struct _BOOT_SECTOR
   ULONGLONG MftLocation;
   ULONGLONG MftMirrLocation;
   CHAR      ClustersPerMftRecord;
-  BYTE      Unused3[3];
+  UCHAR      Unused3[3];
   CHAR      ClustersPerIndexRecord;
-  BYTE      Unused4[3];
+  UCHAR      Unused4[3];
   ULONGLONG SerialNumber;                      // 0x48
   UCHAR     BootCode[432];                     // 0x50
-} __attribute__((packed)) BOOT_SECTOR, *PBOOT_SECTOR;
+} BOOT_SECTOR, *PBOOT_SECTOR;
+#include <poppack.h>
 
 //typedef struct _BootSector BootSector;
 
@@ -91,6 +92,7 @@ typedef struct
 #define FCB_CACHE_INITIALIZED   0x0001
 #define FCB_IS_VOLUME_STREAM    0x0002
 #define FCB_IS_VOLUME           0x0004
+#define MAX_PATH                260
 
 typedef struct _FCB
 {
@@ -187,7 +189,7 @@ typedef struct
   ULONG BytesAllocated;         /* Allocated size of the FILE record */
   ULONGLONG BaseFileRecord;     /* File reference to the base FILE record */
   USHORT NextAttributeNumber;   /* Next Attribute Id */
-  USHORT Pading;                /* Align to 4 byte boundary (XP) */
+  USHORT Pading;                /* Align to 4 UCHAR boundary (XP) */
   ULONG MFTRecordNumber;        /* Number of this MFT Record (XP) */
 } FILE_RECORD_HEADER, *PFILE_RECORD_HEADER;
 
index 3b0c72b..4ffebc3 100644 (file)
 
 /* INCLUDES *****************************************************************/
 
-#include <ntddk.h>
+#include "ntfs.h"
 
 #define NDEBUG
 #include <debug.h>
 
-#include "ntfs.h"
-
-
 /* FUNCTIONS ****************************************************************/
 
 static NTSTATUS