Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уникальный идентификатор файла 
V
    Опции темы
freezeman
Дата 6.4.2012, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Всем привет!

Подскажите, пожалуйста, в структуре BY_HANDLE_FILE_INFORMATION есть два параметра nFileIndexLow и nFileIndexHigh младший и старший идентификатор файла, что означает младший/старший? Я же могу однозначно идентифицировать конкретный файл по этим параметрам?
PM MAIL   Вверх
12usver12
Дата 6.4.2012, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 5.1.2007

Репутация: 1
Всего: 1



в мсдне, вроде как , исчерпывающе описано 
Цитата(msdn)

msdn

PM MAIL   Вверх
freezeman
Дата 6.4.2012, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Цитата(12usver12 @ 6.4.2012,  13:16)
в мсдне, вроде как , исчерпывающе описано 
Цитата(msdn)

msdn

Плохо...как тогда по-другому идентифицировать файл, кроме пути к нему на диске?

Добавлено через 5 минут и 36 секунд
Если сделать MD5 или CRC16? Для работы программы критична скорость работы, то есть получение хэша файла не скажется ли сильно на производительности?
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



Где идентифицировать? На диске или как процесс?

Добавлено через 3 минуты и 2 секунды
Сорри ступил ))) "на диске"

Ну если файловая система ntfs то можно инфу некую о файле в поток записать )



--------------------

PM MAIL ICQ   Вверх
freezeman
Дата 6.4.2012, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Цитата(500mhz @ 6.4.2012,  13:43)
Где идентифицировать? На диске или как процесс?

Добавлено @ 13:46
Сорри ступил ))) "на диске"

Ну если файловая система ntfs то можно инфу некую о файле в поток записать )

Я вот подумал, что не нужно делать хэш всего файла, а только пути к нему, так и быстрее проверять...
PM MAIL   Вверх
12usver12
Дата 6.4.2012, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 5.1.2007

Репутация: 1
Всего: 1



Цитата(freezeman)

Плохо

 читаем плохо.

ничего сложного, для идеального решения тебе нужно сформировать этот Id через 128-битовое число:  
Цитата(msdn)

The identifier (low and high parts) and the volume serial number uniquely identify a file on a single computer. To determine whether two open handles represent the same file, combine the identifier and the volume serial number for each file and compare them.

PM MAIL   Вверх
Akira
Дата 6.4.2012, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 26.3.2012

Репутация: нет
Всего: нет



Нет, ничего такого нет, все делают контрольные суммы. Если файл не большой то оверхеда практически нет.
12usver12
Не надежно, кто даст гарантию, что у Васи будет работать.

Это сообщение отредактировал(а) Akira - 6.4.2012, 14:03
PM MAIL   Вверх
freezeman
Дата 6.4.2012, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Цитата(12usver12 @ 6.4.2012,  13:57)
Цитата(freezeman)

Плохо

 читаем плохо.

ничего сложного, для идеального решения тебе нужно сформировать этот Id через 128-битовое число:  
Цитата(msdn)

The identifier (low and high parts) and the volume serial number uniquely identify a file on a single computer. To determine whether two open handles represent the same file, combine the identifier and the volume serial number for each file and compare them.

А это тогда что?

Цитата

File IDs are not guaranteed to be unique over time, because file systems are free to reuse them.

PM MAIL   Вверх
freezeman
Дата 6.4.2012, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Цитата(500mhz @ 6.4.2012,  13:43)
Где идентифицировать? На диске или как процесс?

Добавлено @ 13:46
Сорри ступил ))) "на диске"

Ну если файловая система ntfs то можно инфу некую о файле в поток записать )

Нет, немного не поняли вы вопрос, мне нужно идентифицировать уникально файл. Получил по HANDLE файла его путь, но сравнение будет выполняться долго. Если у параметров файла был бы уникально его идентифицирующий, то нет проблем все нормально, но нет smile

Скорее всего лучше будет использовать CRC16 для кодирования имени файла, а потом сравнивать только полученные ключи...
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



а если 2 одинаковых файла а имена только разные?


--------------------

PM MAIL ICQ   Вверх
freezeman
Дата 6.4.2012, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Цитата(500mhz @ 6.4.2012,  14:36)
а если 2 одинаковых файла а имена только разные?

Я думал над этим, тогда придется делать хэш по содержимому файла, но мне кажется, что при большом объеме времени много уходить будет...
PM MAIL   Вверх
Akira
Дата 6.4.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 26.3.2012

Репутация: нет
Всего: нет



freezeman
>> CRC16
Ты пытаешься экономить на спичках можешь спокойно использовать CRC32  или MD5. smile 
По поводу содержимого файла, а если файл часто используем и дописывается?  smile 
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



Akira
а если у меня коллекция mkv фильмов по 1,5 гига каждый, каждый раз считать crc или md будет накладно.


--------------------

PM MAIL ICQ   Вверх
freezeman
Дата 6.4.2012, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Цитата(Akira @ 6.4.2012,  14:58)
freezeman
>> CRC16
Ты пытаешься экономить на спичках можешь спокойно использовать CRC32  или MD5. smile 
По поводу содержимого файла, а если файл часто используем и дописывается?  smile

А я не знаю скорость работы, что лучше CRC16, CRC32 или MD5.

Если у файла изменяется содержимое, это никак не влияет на работу. Этот измененный файл просто не будет учитываться, потом вытеснится из памяти (если вы помните мою предыдущую тему "Виртуальная память", поймете о чем я), и если требуется опять туда будет занесен. Хотя, если стоит подумать о изменении файла в ОП сразу после изменения содержимого файла, но это потом, если успею...
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



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


--------------------

PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.