888 TRACE(
"Enter NtfsMount(%lu)\n", DeviceId);
927 Volume->ClusterSize =
Volume->BootSector.SectorsPerCluster *
Volume->BootSector.BytesPerSector;
928 if (
Volume->BootSector.ClustersPerMftRecord > 0)
929 Volume->MftRecordSize =
Volume->BootSector.ClustersPerMftRecord *
Volume->ClusterSize;
931 Volume->MftRecordSize = 1 << (-
Volume->BootSector.ClustersPerMftRecord);
932 if (
Volume->BootSector.ClustersPerIndexRecord > 0)
933 Volume->IndexRecordSize =
Volume->BootSector.ClustersPerIndexRecord *
Volume->ClusterSize;
935 Volume->IndexRecordSize = 1 << (-
Volume->BootSector.ClustersPerIndexRecord);
938 TRACE(
"ClustersPerMftRecord: %d\n",
Volume->BootSector.ClustersPerMftRecord);
939 TRACE(
"ClustersPerIndexRecord: %d\n",
Volume->BootSector.ClustersPerIndexRecord);
940 TRACE(
"MftRecordSize: 0x%x\n",
Volume->MftRecordSize);
941 TRACE(
"IndexRecordSize: 0x%x\n",
Volume->IndexRecordSize);
946 TRACE(
"Reading MFT index...\n");
948 if (!
Volume->MasterFileTable)
975 if (!
Volume->TemporarySector)
986 Volume->DeviceId = DeviceId;
991 TRACE(
"Searching for DATA attribute...\n");
1009 TRACE(
"NtfsMount(%lu) success\n", DeviceId);
#define NTFS_ATTR_TYPE_DATA
VOID FileSystemError(PCSTR ErrorString)
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
NTSYSAPI ULONG NTAPI RtlEqualMemory(CONST VOID *Source1, CONST VOID *Source2, ULONG Length)
static PNTFS_ATTR_CONTEXT NtfsFindAttribute(PNTFS_VOLUME_INFO Volume, PNTFS_MFT_RECORD MftRecord, ULONG Type, const WCHAR *Name)
ARC_STATUS ArcRead(ULONG FileId, VOID *Buffer, ULONG N, ULONG *Count)
PNTFS_VOLUME_INFO NtfsVolumes[MAX_FDS]
ARC_STATUS ArcSeek(ULONG FileId, LARGE_INTEGER *Position, SEEKMODE SeekMode)
#define RtlZeroMemory(Destination, Length)
const DEVVTBL NtfsFuncTable
FORCEINLINE VOID FrLdrTempFree(PVOID Allocation, ULONG Tag)