- Make NTFS compile on msvc.

svn path=/trunk/; revision=20651
This commit is contained in:
Alex Ionescu 2006-01-07 06:20:59 +00:00
parent ee2a0b5cee
commit e3153f1ab6
3 changed files with 18 additions and 21 deletions

View 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,17 +194,14 @@ ReadFileRecord (PDEVICE_EXTENSION Vcb,
PVOID p;
ULONG BytesPerFileRecord = Vcb->NtfsInfo.BytesPerFileRecord;
ULONG clusters = max(BytesPerFileRecord / Vcb->NtfsInfo.BytesPerCluster, 1);
ULONGLONG vcn = index * BytesPerFileRecord / Vcb->NtfsInfo.BytesPerCluster;
LONG m = (Vcb->NtfsInfo.BytesPerCluster / BytesPerFileRecord) - 1;
ULONG n = m > 0 ? (index & m) : 0;
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;
memcpy(file, (PVOID)((ULONG_PTR)p + n * BytesPerFileRecord), BytesPerFileRecord);
ExFreePool(p);
@ -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);

View 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;

View file

@ -27,14 +27,11 @@
/* INCLUDES *****************************************************************/
#include <ntddk.h>
#include "ntfs.h"
#define NDEBUG
#include <debug.h>
#include "ntfs.h"
/* FUNCTIONS ****************************************************************/
static NTSTATUS