mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
- Make NTFS compile on msvc.
svn path=/trunk/; revision=20651
This commit is contained in:
parent
ee2a0b5cee
commit
e3153f1ab6
3 changed files with 18 additions and 21 deletions
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -27,14 +27,11 @@
|
|||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntddk.h>
|
||||
#include "ntfs.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
#include "ntfs.h"
|
||||
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
static NTSTATUS
|
||||
|
|
Loading…
Reference in a new issue