Используя следующий код, я могу успешно открыть сырой диск на моей машине, но когда я получаю длину диска, я получаю 0 каждый раз ...
// Where "Path" is /dev/rdisk1 -- is rdisk1 versus disk1 the proper way to open a raw disk?
Device = open(Path, O_RDWR);
if (Device == -1)
{
throw xException("Error opening device");
}
И получение размера с помощью обоих этих методов возвращает 0:
struct stat st;
if (stat(Path, &st) == 0)
_Length = st.st_size;
/
_Length = (INT64)lseek(Device, 0, SEEK_END);
lseek(Device, 0, SEEK_SET);
Я не совсем знаком с программированием на платформах, отличных от Windows, поэтому, пожалуйста, прости все, что кажется странным. Мои вопросы здесь:
- Это правильный способ открыть сырой диск под OS X?
- Что может быть причиной того, что размер диска будет возвращен как 0?
Диск, о котором идет речь, - это неформатированный диск, но для тех, кому нужна информация из Дисковой утилиты (с удаленными несущественными данными):
Name : ST920217 AS Media
Type : Disk
Partition Map Scheme : Unformatted
Disk Identifier : disk1
Media Name : ST920217 AS Media
Media Type : Generic
Writable : Yes
Total Capacity : 20 GB (20,003,880,960 Bytes)
Disk Number : 1
Partition Number : 0