Re[5]: Как узнать "размер файла на диске" ?
От: Guard_h4s Россия  
Дата: 12.08.04 12:14
Оценка:
Здравствуйте, Stanky, Вы писали:

S>Проблема не понятна!!!


Извиняюсь, кажется я действительно не так понял предыдущий пост
Re[4]: Как узнать "размер файла на диске" ?
От: vgrigor  
Дата: 12.08.04 13:58
Оценка:
S>Какая чушь!!!

Бывает заработаешься,
и не такое в голову придет.

Sorry за оффтоп.
Винтовку добудешь в бою!
Re[3]: Как узнать "размер файла на диске" ?
От: aGrey Литва  
Дата: 12.08.04 17:11
Оценка:
Здравствуйте, vgrigor, Вы писали:

V>А что это за сырцы ?

V>И почему по шее ?
V>Сообщите что за страшные и интересные истории, с разведчиками и фашистами были про это?

С хакерами и юристами Microsoft...
Re[2]: Как узнать "размер файла на диске" ?
От: Valerio Россия linkedin.com/in/boronin
Дата: 17.08.04 05:37
Оценка:
O>делаем a = GetDiskFreeSpace — удаяем файл и опять b = GetDiskFreeSpace
O>b-a -> столько и занимал файл!
где гарантии что в это время paging file не подрос, tmp file не умер или кто-то другой что-то свое не записал\стер?
... << RSDN@Home 1.1.4 @@subversion >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[4]: Как узнать" размер файла на диске" ?
От: Valerio Россия linkedin.com/in/boronin
Дата: 17.08.04 05:37
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:
>> т.е. округляется до большего целого и все ?
>> (на любой ОС ?)

PD>Да. Но это практически всегда 512.

ага, в настоящее время это всегда на x86, без практически
... << RSDN@Home 1.1.4 @@subversion >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: Как узнать "размер файла на диске" ?
От: Othello  
Дата: 17.08.04 06:17
Оценка:
O>>делаем a = GetDiskFreeSpace — удаяем файл и опять b = GetDiskFreeSpace
O>>b-a -> столько и занимал файл!
V>где гарантии что в это время paging file не подрос, tmp file не умер или кто-то другой что-то свое не записал\стер?
ЭЭЭЭ.... НЕТУ!
ИМХО:
Только если это делать как одной — неделимой операцией...
... << RSDN@Home 1.1.4 >>
Re[5]: Как узнать" размер файла на диске" ?
От: MShura  
Дата: 17.08.04 09:42
Оценка:
Здравствуйте, Valerio, Вы писали:

V>Здравствуйте, Pavel Dvorkin, Вы писали:

>>> т.е. округляется до большего целого и все ?
>>> (на любой ОС ?)

PD>>Да. Но это практически всегда 512.

V>ага, в настоящее время это всегда на x86, без практически

На SCSI и MO очень(!) часто BytesPerSector > 512
Re[6]: Как узнать" размер файла на диске" ?
От: Valerio Россия linkedin.com/in/boronin
Дата: 18.08.04 04:29
Оценка:
Здравствуйте, MShura, Вы писали:

PD>>>Да. Но это практически всегда 512.

V>>ага, в настоящее время это всегда на x86, без практически

MS>На SCSI и MO очень(!) часто BytesPerSector > 512

да, конечно же я имел ввиду жесткие диски
понятно что всякие CD девайсы всегда опять же имеют 2048 байта.

насчет SCSI жестких дисков:
любопытно, есть ли тут серийные устройства (HDD) с размером не 512 на сектор?
... << RSDN@Home 1.1.4 @@subversion >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: Как узнать "размер файла на диске" ?
От: mokc0der  
Дата: 18.08.04 05:51
Оценка:
Здравствуйте, vgrigor, Вы писали:

V>Гранудрование определеяется по


V>BytesPerSector ?


V>т.е. округляется до большего целого и все ?

V>(на любой ОС ?)

Файлы выравниваются не по BytesPerSector а по BytesPerClaster. А скока байт в кластере зависит от файловой системы и тем какой размер кластера выбран при ее создании. 512 только для FAT12. Так от 4096 до 65536
Re[5]: Как узнать "размер файла на диске" ?
От: perezzz Беларусь  
Дата: 18.08.04 14:35
Оценка:
>> Хорошо: тогда создайте в FAT32 раздел на 40 Гб с размером кластера 4Кб.
>>
S>Проблема не понятна!!!
S>Максимальный размер раздела при таком размере кластера где-то 25ГБ!!!
Теоретически на FAT32 можно создать раздел, равный 512 * 2^32 байт = 2Тб, т.к в 0-м секторе раздела по смещению 0x20 хранится 4 байтовое количество секторов в разделе. При этом таблица FAT будет содержать в себе 2^32 элементов, т.е это максимальное количество кластеров в разделе, при условии что размер кластера равен размеру сектора. Максимальный размер кластера равен 64 секторам, т.е 512 * 64 = 32Кб. Следует учитывать, что размер раздела должен быть кратен размеру кластера.
... << RSDN@Home 1.1.4 beta 2 r157>> :: Vader — The Code
Re: Как узнать "размер файла на диске" ?
От: mig23  
Дата: 18.08.04 19:10
Оценка:
Здравствуйте, vgrigor, Вы писали:

V>Как узнать "размер файла на диске" ?


V>т.е.не логический размер — 2 байта,

V>а сколько он вклюяая полный сектор займет ?

V>Есть такое апи ?


V>Спасибо


Вопрос, как мне кажется, несложный — то есть как раз для моего уровня развития
Мне кажется, нужно взять размер файла,(вышеупомянутые 2 байта) и округлить вверх до ближайшего числа, равного размеру кластера для данного драйва. Если не ошибаюсь, то API GetDiskFreeSpace и GetDiskFreeSpaceEX возвращают в одном из параметров размер кластера.
Успехов!
Re[6]: Как узнать "размер файла на диске" ?
От: MShura  
Дата: 19.08.04 12:10
Оценка:
Здравствуйте, perezzz, Вы писали:

>>> Хорошо: тогда создайте в FAT32 раздел на 40 Гб с размером кластера 4Кб.

>>>
S>>Проблема не понятна!!!
S>>Максимальный размер раздела при таком размере кластера где-то 25ГБ!!!
P>Теоретически на FAT32 можно создать раздел, равный 512 * 2^32 байт = 2Тб, т.к в 0-м секторе раздела по смещению 0x20 хранится 4 байтовое количество секторов в разделе. При этом таблица FAT будет содержать в себе 2^32 элементов, т.е это максимальное количество кластеров в разделе, при условии что размер кластера равен размеру сектора. Максимальный размер кластера равен 64 секторам, т.е 512 * 64 = 32Кб. Следует учитывать, что размер раздела должен быть кратен размеру кластера.

Вы неправы. На FAT32 максимальное кол-во адресуемых кластеров 2^28. Это написано в спецификации Microsoft на FAT32.
Максимальный размер кластера 64 сектора (иногда можно 128, но это может не работать в некоторых Windows).
Если считать, что BytesPerSector = 512, то максимальный размер адресуемого пространства получается примерно 2^28*128*512 = 2^28*2^7*2^9 = 2^44. Чтобы получить размер тома, на котором FAT32 может юзать столько места необходимо прибавить два размера таблицы FAT.
Re[7]: Как узнать" размер файла на диске" ?
От: MShura  
Дата: 19.08.04 12:13
Оценка: 5 (1)
Здравствуйте, Valerio, Вы писали:

V>Здравствуйте, MShura, Вы писали:


PD>>>>Да. Но это практически всегда 512.

V>>>ага, в настоящее время это всегда на x86, без практически

MS>>На SCSI и MO очень(!) часто BytesPerSector > 512

V>да, конечно же я имел ввиду жесткие диски
V>понятно что всякие CD девайсы всегда опять же имеют 2048 байта.

V>насчет SCSI жестких дисков:

V>любопытно, есть ли тут серийные устройства (HDD) с размером не 512 на сектор?

Такие устройства есть, поскольку пользователи наших коммерческих программ, у которых жесткие диски имеют сектор не 512 обычно имеют проблемы. Они пишут нам.
Пока это были только SCSI.
Re[7]: Как узнать "размер файла на диске" ?
От: Stanky  
Дата: 22.08.04 12:55
Оценка:
> Вы неправы. На FAT32 максимальное кол-во адресуемых кластеров 2^28. Это
> написано в спецификации Microsoft на FAT32.
>
Спецификацию я конечно не читал, но мои опыты в своё время показали, что максимальное количество кластеров 2^24!!!
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[8]: Как узнать "размер файла на диске" ?
От: MShura  
Дата: 23.08.04 11:01
Оценка:
Здравствуйте, Stanky, Вы писали:

>> Вы неправы. На FAT32 максимальное кол-во адресуемых кластеров 2^28. Это

>> написано в спецификации Microsoft на FAT32.
>>
S>Спецификацию я конечно не читал, но мои опыты в своё время показали, что максимальное количество кластеров 2^24!!!

http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc

Цитата:
Note how the FAT32 code above works. A FAT32 FAT entry is actually only a 28-bit entry. The high 4 bits of a FAT32 FAT entry are reserved. The only time that the high 4 bits of FAT32 FAT entries should ever be changed is when the volume is formatted, at which time the whole 32-bit FAT entry should be zeroed, including the high 4 bits.

A bit more explanation is in order here, because this point about FAT32 FAT entries seems to cause a great deal of confusion. Basically 32-bit FAT entries are not really 32-bit values; they are only 28-bit values. For example, all of these 32-bit cluster entry values: 0x10000000, 0xF0000000, and 0x00000000 all indicate that the cluster is FREE, because you ignore the high 4 bits when you read the cluster entry value. If the 32-bit free cluster value is currently 0x30000000 and you want to mark this cluster as bad by storing the value 0x0FFFFFF7 in it. Then the 32-bit entry will contain the value 0x3FFFFFF7 when you are done, because you must preserve the high 4 bits when you write in the 0x0FFFFFF7 bad cluster mark.
Re[9]: Как узнать "размер файла на диске" ?
От: Stanky  
Дата: 23.08.04 19:11
Оценка: :)
> Цитата:
>
Не спорил и не буду, но пока на практике не увижу обратного, останусь при своём мнении!!!
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[2]: Как узнать "размер файла на диске" ?
От: Lukashov Россия  
Дата: 24.08.04 03:39
Оценка:
Здравствуйте, Othello, Вы писали:

O>делаем a = GetDiskFreeSpace — удаяем файл и опять b = GetDiskFreeSpace

O>b-a -> столько и занимал файл!

Отличный способ узнать суммарный размер всех файлов системы!
Жаль, что система не даст все файлы грохнуть
Re[8]: Как узнать"размер файла на диске"?
От: Valerio Россия linkedin.com/in/boronin
Дата: 27.10.04 13:16
Оценка:
Здравствуйте, MShura, Вы писали:

PD>>>>>Да. Но это практически всегда 512.

V>>>>ага, в настоящее время это всегда на x86, без практически

MS>>>На SCSI и MO очень(!) часто BytesPerSector > 512

V>>да, конечно же я имел ввиду жесткие диски
V>>понятно что всякие CD девайсы всегда опять же имеют 2048 байта.

V>>насчет SCSI жестких дисков:

V>>любопытно, есть ли тут серийные устройства (HDD) с размером не 512 на сектор?

MS>Такие устройства есть, поскольку пользователи наших коммерческих программ, у которых жесткие диски имеют сектор не 512 обычно имеют проблемы. Они пишут нам.

MS>Пока это были только SCSI.
кстати, недавно вспомнил откуда у меня была такая уверенность в 512-bytes per sector on HDD
это ATA-5 спецификация для IDE жестких дисков (насчет более новых спецификаций — не узнавал пока)
поэтому неудивительно, что только SCSI попадались
... << RSDN@Home 1.1.4 beta 3 rev. 193>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.