Я пишу программу, и мне нужен доступ к некоторой информации в загрузочном секторе о файловой системе FAT32, которую я смонтировал.
Вот что я сделал, полностью прокомментировал.
int main (void) {
unsigned short *i; //2 byte unsigned integer pointer
char tmp[1024]; //buffer
int fd; //file descriptor from opening device
fd = open("/dev/sdf", O_RDONLY); //open the device file
lseek(fd, 14, SEEK_SET); //set offset to 14 (0x0E), i.e. storing "no. of reserved sectors" of the FAT32 system
read(fd, tmp, 2); //read off 2 bytes, "no. of reserved sectors" is represented by 2 bytes
i = &tmp; //point j at those 2 bytes
printf("*j: %d\n", *j); //print *j out
close(fd); //close device
return 0;
}
Вывод * i равен 38, что является ерундой. Я отформатировал файловую систему с помощью mkfs.vfat. Я установил «№ зарезервированных секторов» на 32.
Что я пробовал:
i = (unsigned short *) & tmp, выполнить приведение, это удаляет предупреждение при компиляции, но не помогает
чтение (fd, tmp, 512), загрузка всего загрузочного сектора (512 байт) в tmp, затем чтение из буфера, но это не помогает, но результат все равно 38.
возьмите со смещением, то есть измените 14 на 13 или 15, на случай, если я получу неправильный индекс. Он печатает 9744 для 13 и 512 для 15 соответственно, поэтому не работает.
Я не уверен, правильно ли я это делаю. Может кто-нибудь указать мне правильное направление?
Заранее спасибо,
Felastine.