Форум программистов, компьютерный форум, киберфорум
Администрирование Windows
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Как ОС узнаёт сколько байт занято на CD-диске?

29.01.2019, 21:12. Показов 2161. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! То есть тема такая,что диск вставил в дисковвод, он пожужжал и готово количество байт, которые "занято" (3469492224)

Просто подсчитать эти байты ось не может потому, что слишком быстро узнаёт их количество и потому ещё, что по факту на CD-диске их больше. Так, инструментом
Bash
1
dd if=/dev/sr0 of=dst
(линукс) получаем другое значение, 3469934592 байт (большее). Его же получаем инструментом dmde

Вывод: значение 3469492224 (как на рисунке) где-то на CD-диске прописано и ось просто его оттуда считывает. Но где- вот вопрос! Нормальной спецификации нет нигде, везде ерунда какая-то попадается типа этой:
https://studfiles.net/preview/4606283/page:7/

Спасибо, кто откликнется.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2019, 21:12
Ответы с готовыми решениями:

Вывести в Listbox сколько занято и сколько свободно памяти на жёстком диске
ещё и номер его, но главное память

Флешка - в свойствах 0 байт занято 0 байт свободно
Народ проблема такая... втыкаю флешку на комп... она высвечивается... захожу на флешку пустая, хотя инфа есть на ней... захожу в свойства 0...

На диске 0б свободно и занято
подскажите пожалуйста, скачал с интернета фильм, хотел записать его на диск, засунул его в дисковод, и там нет пустого места и нет...

10
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
30.01.2019, 03:22
Цитата Сообщение от kravam Посмотреть сообщение
Как ось узнаёт сколько байт занято на CD-диске?
https://docs.microsoft.com/ru-... eespaceexa

Цитата Сообщение от kravam Посмотреть сообщение
Так, инструментом
dd if=/dev/sr0 of=dst
(линукс) получаем другое значение
А сколько показывает линукс инструмент df?

Bash
1
df -h
Цитата Сообщение от kravam Посмотреть сообщение
Просто подсчитать эти байты ось не может потому, что слишком быстро узнаёт их количество
Почему не может? Информация в показанном окошке берётся не в результате подсчёта каждого занятого сектора на поверхности диска, а из таблицы файловой системы.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
30.01.2019, 22:02  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
https://docs.microsoft.com/ru-ru/win...skfreespaceexa
А оно точно правильно?

Код отсюда взят:


Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <windows.h>
#include <winioctl.h>
#include <stdio.h>
 
BOOL GetDriveGeometry(DISK_GEOMETRY *pdg)
{
  HANDLE hDevice;               // дескриптор проверяемого устройства 
  BOOL bResult;                 // флажок результата
  DWORD junk;                   // сбрасываем результаты
 
  hDevice = CreateFile("\\\\.\\D:",  // открываемое устройство
                    0,                // нет доступа к устройству
                    FILE_SHARE_READ | // режим совместного использования
                    FILE_SHARE_WRITE, 
                    NULL,             // атрибуты безопасности по умолчанию
                    OPEN_EXISTING,    // расположение
                    0,                // атрибуты файла
                    NULL);            // не копировать атрибуты файла
 
  if (hDevice == INVALID_HANDLE_VALUE) // невозможно открыть устройство
  {
    return (FALSE);
  }
 
  bResult = DeviceIoControl(hDevice,  // запрошенное устройство
      IOCTL_DISK_GET_DRIVE_GEOMETRY,  // выполняемая операция
                             NULL, 0, // буфера ввода нет
                            pdg, sizeof(*pdg),     // буфер вывода
                            &junk,                 // # возвращено байтов
                            (LPOVERLAPPED) NULL);  // синхронизация ввода/вывода (I/O)
 
  CloseHandle(hDevice);
 
  return (bResult);
}
 
int main(int argc, char *argv[])
{
  DISK_GEOMETRY pdg;            // геометрическая структура дискового устройства
  BOOL bResult;                 // флажок общих результатов
  ULONGLONG DiskSize;           // размер диска, в байтах
 
  bResult = GetDriveGeometry (&pdg);
 
  if (bResult) 
  {
    printf("Cylinders = %I64d\n", pdg.Cylinders);
    printf("Tracks per cylinder = %ld\n", (ULONG) pdg.TracksPerCylinder);
    printf("Sectors per track = %ld\n", (ULONG) pdg.SectorsPerTrack);
    printf("Bytes per sector = %ld\n", (ULONG) pdg.BytesPerSector);
 
    DiskSize = pdg.Cylinders.QuadPart * (ULONG)pdg.TracksPerCylinder *
      (ULONG)pdg.SectorsPerTrack * (ULONG)pdg.BytesPerSector;
    printf("Disk size = %I64d (Bytes) = %I64d (Gb)\n", DiskSize,
           DiskSize / (1024 * 1024 * 1024));
  } 
  else 
  {
    printf ("GetDriveGeometry failed. Error %ld.\n", GetLastError ());
  }
 
    getchar ();
 
  return ((int)bResult);
}


Даёт:
Windows Batch file
1
2
3
4
5
Cylinders = 827
Tracks per cylinder = 64
Sectors per track = 32
Bytes per sector = 2048
Disk size = 3468689408 (Bytes) = 3 (Gb)
А в свойствах винды показывается 3469492224

++++++++++++++++++++++++++++++++++++=

dmde показывает 3469934592
dd показывает 3469934592

++++++++++++++++++++++++++++++++++++=

Цитата Сообщение от KDE777 Посмотреть сообщение
А сколько показывает линукс инструмент df?
А зачем? А впрочем, вот. Нас интересует /dev/sr0

Bash
1
2
3
4
5
6
7
8
9
user@astra:~$ df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
udev                10M            0   10M            0% /dev
tmpfs              370M         768K  369M            1% /run
/dev/sda5           65G          28G   34G           46% /
tmpfs              5,0M            0  5,0M            0% /run/lock
tmpfs              2,6G         4,0K  2,6G            1% /run/shm
/dev/sr0           3,3G         3,3G     0          100% /media/cdrom0
user@astra:~$
++++++++++++++++++++++++++++++++++++=

Цитата Сообщение от KDE777 Посмотреть сообщение
Информация в показанном окошке берётся не в результате подсчёта каждого занятого сектора на поверхности диска, а из таблицы файловой системы.
А откуда именно из таблицы? Тема именно об этом.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
31.01.2019, 10:53
Цитата Сообщение от kravam Посмотреть сообщение
А оно точно правильно?
Кто оно - WinAPI? Тогда спросите в MS

Цитата Сообщение от kravam Посмотреть сообщение
А впрочем, вот.
Запустите df ещё и без -h, а то я забыл что мы байты считаем и написал, как сам привык запускать...

Предположу, что dd показывает размер вместе с файловой таблицей и прочими метаданными, а окно свойства диска в проводнике - только размер данных.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
31.01.2019, 20:02  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Кто оно - WinAPI? Тогда спросите в MS
что же они, скажут, что оно неправильно? Тем более, чего-то оно там показывает. Но я-то думал, с его помощью найти 3469492224, помогло бы.

Цитата Сообщение от KDE777 Посмотреть сообщение
Запустите df ещё и без -h, а то я забыл что мы байты считаем и написал, как сам привык запускать...
Bash
1
2
3
4
5
6
7
8
9
10
user@astra:~$
user@astra:~$ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
udev                 10240            0    10240            0% /dev
tmpfs               378592          724   377868            1% /run
/dev/sda5         67154552     29036584 34683628           46% /
tmpfs                 5120            0     5120            0% /run/lock
tmpfs              2710140            4  2710136            1% /run/shm
/dev/sr0           3388176      3388176        0          100% /tmp/temp
user@astra:~$
в общем, вопрос открыт.

Добавлено через 5 минут
Цитата Сообщение от KDE777 Посмотреть сообщение
Предположу, что dd показывает размер вместе с файловой таблицей и прочими метаданными, а окно свойства диска в проводнике - только размер данных.
Если поможет. Итак, dd даёт нам 3469934592 байта, в проводнике получаем 3469492224 байта. Так вот, эти 3469492224 байта и есть первые 3469492224 байта того файла, который даёт нам dd.

Как я узнал? Да просто откусил от файла, который дал dd первые 3469492224 байта, скропал из них файл, нашёл его контрольную сумму и сравнил с контрольной суммой файла, скропанного https://cdburnerxp.se/

Контрольные суммы сошлись
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
01.02.2019, 11:47
Цитата Сообщение от kravam Посмотреть сообщение
/dev/sr0 * * * * * 3388176
Вот и отлично - df выдал вам (для /dev/sr0): 3 388 176 KB или 3 469 492 224 Byte, что полностью соответствует проводнику Windows:

Цитата Сообщение от kravam Посмотреть сообщение
А в свойствах винды показывается 3469492224
Цитата Сообщение от kravam Посмотреть сообщение
Если поможет. Итак, dd даёт нам 3469934592 байта, в проводнике получаем 3469492224 байта. Так вот, эти 3469492224 байта и есть первые 3469492224 байта того файла, который даёт нам dd.
Об этом я и писал вам, dd инструмент для полного клонирования диска (включая ft и прочие метаданные), а проводник Windows и df в Линукс, показывают только размер данных.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.02.2019, 21:09  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Вот и отлично - df выдал вам (для /dev/sr0): 3 388 176 KB или 3 469 492 224 Byte, что полностью соответствует проводнику Windows:
Выдал, да. Вопрос стоит (и с самого начала стоял) - где он их взял-то?

+++++++++++++++++++++++++++++++++++++

...Вы не просили а я сам не догадался посмотреть (смотрим в dmde):



Вот, пожалуйста. Количество секторов 6776352. Первый нулевой. В одном секторе 512 байт, итого 3649492224. Вот прямо c нулевого начиная,
https://cdburnerxp.se/
и считывает 3649492224 байта. Ну и df и проводник винды показывают их.

(Тут, быть может, те же результаты будут если использовать в вычислениях цилиндры и дорожки. Фишка в том, что никаких цилиндров на CD диске нет и быть не может. Поэтому не будем путаться и не будем с их помощью вычислять размер)

Оценку (негативную, естессно) инструменту https://cdburnerxp.se/ дадим в этой теме (если всё лень читать, смотрим последнее сообщение).
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.02.2019, 21:35  [ТС]
Как на самом деле создать образ диска (*.iso файл)?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
02.02.2019, 09:51
Цитата Сообщение от kravam Посмотреть сообщение
Выдал, да. Вопрос стоит (и с самого начала стоял) - где он их взял-то?
Как это работает в проводнике Windows посмотреть не просто, но т.к. df показывает тоже самое, можете самостоятельно ознакомиться - "где он их взял-то":

https://github.com/coreutils/c... r/src/df.c

Добавлено через 1 минуту
А заодно и поглядеть, как работает dd:

https://github.com/coreutils/c... r/src/dd.c
1
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
02.02.2019, 10:07
http://www.herongyang.com/CD-D... cated.html
Every CD (Compact Disc) has a TOC (Table Of Contents) section located in...
и далее:
The TOC in the "lead-in" area contains the total length of the recording session, a list of tracks and their starting addresses and some other information.
Цитата Сообщение от kravam Посмотреть сообщение
Нормальной спецификации нет нигде
стандарты компакт-дисков - это т.н. "радужные" книги - "красная" (Redbook), "зеленая" (Greenbook), "оранжевая"(Orangebook) и т.д. (каких цветов они есть еще, я просто не помню). так вот в них как раз и водится "нормальная спецификация", а точнее - СТАНДАРТ. правда, в открытом доступе раньше их не было
1
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185
13.02.2019, 11:28
Цитата Сообщение от Dmitry Посмотреть сообщение
стандарты компакт-дисков - это т.н. "радужные" книги - "красная" (Redbook), "зеленая" (Greenbook), "оранжевая"(Orangebook) и т.д. (каких цветов они есть еще, я просто не помню). так вот в них как раз и водится "нормальная спецификация", а точн
https://en.wikipedia.org/wiki/Rainbow_Books
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2019, 11:28
Помогаю со студенческими работами здесь

На диске показывает 8 Гб занято, а в свойствах 10 Гб
Добрый вечер! Подскажите такой вопросик. На одном харде только остатки какие-то от предыдущих Винд (папки, типа, Recycle bin, которые в...

Чем занято место на жестком диске?
Удалил всё что смог с диска и скрытые файлы и точки сохранения и виртуальна память не стоит на этом диске а 9гб всёравно чтото занимает? На...

Много места занято на диске неизвестно чем
около 700Гб занятого пространства!!!

Определить, сколько элементов фиксированного массива занято и сколько свободно
Пользователь вводит символы с клавиатуры в фиксированный массив до тех пор, пока не встретится символ ‘z’. Определить, сколько элементов...

Узнать размер диска, сколько занято и сколько свободно
Здравствуйте. Как можно узнать размер диска,сколько занято и сколько свободно на cmd? Желательно все величины в mb или Gb


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru