Я смотрю на структуру каталогов низкого уровня раздела диска, отформатированного как "vfat" файловая система. Структура записи каталога, которую я использую:
struct __attribute__ ((packed)) Dentry
{
char name[11];
Attr attr;
uint8_t reserved;
uint8_t ctimeTenth;
Time ctime;
Date cdate;
Date adate;
uint16_t clusterHi;
Time mtime;
Date mdate;
uint16_t clusterLo;
uint32_t size;
};
Так, последние четыре байта записи каталога должны представить размер файла или каталога в байтах. Однако в моих записях каталога экспериментов для каталогов (не файлы) всегда имеют нуль в size
поле. Например, это dd
дамп моего корневого каталога с одним файлом и одним непустым подкаталогом (названный qqq
):
00000000 42 65 00 65 00 66 00 66 00 66 00 0f 00 fe 00 00 |Be.e.f.f.f......|
00000010 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................|
00000020 01 61 00 61 00 61 00 62 00 62 00 0f 00 fe 62 00 |.a.a.a.b.b....b.|
00000030 63 00 63 00 63 00 64 00 64 00 00 00 64 00 65 00 |c.c.c.d.d...d.e.|
00000040 41 41 41 42 42 42 7e 31 20 20 20 20 00 64 43 60 |AAABBB~1 .dC`|
00000050 d1 44 d1 44 00 00 43 60 d1 44 04 00 0b 00 00 00 |.D.D..C`.D......|
00000060 41 71 00 71 00 71 00 00 00 ff ff 0f 00 3d ff ff |Aq.q.q.......=..|
00000070 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................|
00000080 51 51 51 20 20 20 20 20 20 20 20 10 00 00 20 79 |QQQ ... y|
00000090 d1 44 d1 44 00 00 20 79 d1 44 09 00 00 00 00 00 |.D.D.. y.D......|
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
(Байты с size
0x9c - 0x9f),
Вы могли объяснить меня, почему этот размер является нулем? Или может быть, кто-то мог указать на меня на документ, описав vfat
записи каталога с большим количеством деталей?
(Я нахожусь на Ubuntu 3.11.10.3, работая как гость ОС в VMware Fusion на Mac),
Каталог не является на самом деле файлом, но логическим путем к системе для организации себя. Путем каталоги были бы сохранены (в зависимости от файловой системы) в своего рода таблице. Например: FAT использует F ile А местоположение способный T.
, Таким образом, размер каталога зависел бы от суммы пространства, которое это поднимает в той таблице, больше каталогов равняется большей таблице (таблицам). Это может быть просто пара байтов.
я мог быть неправ в некоторых точках, но я вполне уверен, это - то, почему Вы не видите размера в шестнадцатеричном числе (поскольку это - главным образом указатель).