887{
892
893 TRACE(
"Enter NtfsMount(%lu)\n", DeviceId);
894
895
896
897
902
903
904
905
909 {
912 }
915 {
918 }
919
920
921
922
924 {
927 }
928
929
930
931
932 Volume->ClusterSize =
Volume->BootSector.SectorsPerCluster *
Volume->BootSector.BytesPerSector;
933 if (
Volume->BootSector.ClustersPerMftRecord > 0)
934 Volume->MftRecordSize =
Volume->BootSector.ClustersPerMftRecord *
Volume->ClusterSize;
935 else
936 Volume->MftRecordSize = 1 << (-
Volume->BootSector.ClustersPerMftRecord);
937 if (
Volume->BootSector.ClustersPerIndexRecord > 0)
938 Volume->IndexRecordSize =
Volume->BootSector.ClustersPerIndexRecord *
Volume->ClusterSize;
939 else
940 Volume->IndexRecordSize = 1 << (-
Volume->BootSector.ClustersPerIndexRecord);
941
943 TRACE(
"ClustersPerMftRecord: %d\n",
Volume->BootSector.ClustersPerMftRecord);
944 TRACE(
"ClustersPerIndexRecord: %d\n",
Volume->BootSector.ClustersPerIndexRecord);
945 TRACE(
"MftRecordSize: 0x%x\n",
Volume->MftRecordSize);
946 TRACE(
"IndexRecordSize: 0x%x\n",
Volume->IndexRecordSize);
947
948
949
950
951 TRACE(
"Reading MFT index...\n");
953 if (!
Volume->MasterFileTable)
954 {
957 }
961 {
966 }
969 {
974 }
975
976
977
978
980 if (!
Volume->TemporarySector)
981 {
986 }
987
988
989
990
991 Volume->DeviceId = DeviceId;
992
993
994
995
996 TRACE(
"Searching for DATA attribute...\n");
999 {
1004 }
1005
1006
1007
1008
1010
1011
1012
1013
1014 TRACE(
"NtfsMount(%lu) success\n", DeviceId);
1016}
#define NTFS_ATTR_TYPE_DATA
ARC_STATUS ArcSeek(ULONG FileId, LARGE_INTEGER *Position, SEEKMODE SeekMode)
VOID FileSystemError(PCSTR ErrorString)
ARC_STATUS ArcRead(ULONG FileId, VOID *Buffer, ULONG N, ULONG *Count)
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
FORCEINLINE VOID FrLdrTempFree(PVOID Allocation, ULONG Tag)
PNTFS_VOLUME_INFO NtfsVolumes[MAX_FDS]
const DEVVTBL NtfsFuncTable
static PNTFS_ATTR_CONTEXT NtfsFindAttribute(PNTFS_VOLUME_INFO Volume, PNTFS_MFT_RECORD MftRecord, ULONG Type, const WCHAR *Name)
#define RtlEqualMemory(dst, src, len)
#define RtlZeroMemory(Destination, Length)