powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Ведь нельзя же просто так взять, и не создать файл с помощью CreateFile?
3 сообщений из 3, страница 1 из 1
Ведь нельзя же просто так взять, и не создать файл с помощью CreateFile?
    #38992050
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Один из способов проверить, что два имени файла указывают на один и тот же файл - использовать связку CreateFile и GetFileInformationByHandle . Если скормить CreateFile 'у связку FILE_ATTRIBUTE_TEMPORARY || FILE_FLAG_DELETE_ON_CLOSE , то система не делает бессмысленный flush. CreateFile с этими флагами всё же создаёт файл нулевой длины на диске, хоть и существующий только до закрытия хэндла. Даже если дополнительно указать dwDesiredAccess = 0 (= только опрос параметров, реального чтения/записи не предполагается).

Правильно ли я понимаю, что данный способ годится только на тот случай, когда или файл реально существует, или есть права на его создание?

Т.е. нельзя никакими способами получить беспроблемно-скармливаемый GetFileInformationByHandle 'у хэндл, если проверяется имя не существующего пока файла в защищённом от записи каталоге или файла на не подключенном диске.

Параметры nFileIndexHigh/Low приходящей в ответ структуры BY_HANDLE_FILE_INFORMATION , конечно, намекают коту, что самый надёжный способ застолбить уникальный индекс (особливо для низкоуровнего кода) - создать болванку файла, и не париться с виртуальщиной. Но всё ж хочется уточнить у знающих людей.
...
Рейтинг: 0 / 0
Ведь нельзя же просто так взять, и не создать файл с помощью CreateFile?
    #38993044
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ведь нельзя же просто так взять, и не создать файл с помощью CreateFile?
    #38993183
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
М-м? Не нашёл в записке к патенту ответа. Там рассказывается про создание файлов - временных, блокировок, создание жёстких ссылок, но как оно к созданию виртуального файла относится? За каждым запатентованным шагом стоит реальный файл на диске, или же ссылка на реальный файл (да hard link на несуществующий файл невозможна).

Думаю, что моё предположение в первом посте верно, и сравнить указанным способом два имени для несуществующего файла невозможно. Если каким-то боком я неправ - ткните, пожалуйста, более предметно.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Ведь нельзя же просто так взять, и не создать файл с помощью CreateFile?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]