![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Расположение заблокированного файла на диске. [D7, NT4, Win2k, WinXP]
Семен Сорокин © (2005-06-22 18:06:00)Приветствую гуру, кто может подсказать как получить покластерное расположение заблокированного файла на диске, например pagefile.sys (NT4, W2k, XP). Не блокированные файлы просмотриваю с помощью ф-ии DeviceIoControl с управляющим кодом FSCTL_GET_RETRIEVAL_POINTERS, но дело в том что там входным параметром используется Handle открытого файла, а если он заблокирован, то этот Handle не удасться получить.
С уважением, Семен.
Семен Сорокин (2005-06-22 18:57:00) [21]ага, а ведь есть же что-то :) по поводу структуры NTFS - это да (через FSCTL_GET_NTFS_FILE_RECORD если я не ошибаюсь), а что делать если FAT32... необходимо нечто универсальное.
PS. Спасибо за помощь.
Игорь Шевченко (2005-06-22 18:49:00) [22]Семен Сорокин © (22.06.05 18:39) [4]
Defrag имени Руссиновича тоже не показывает :)
Можно, конечно, и структуры NTFS читать, у Свена Шрайбера пример есть, но уж больно муторно.
Семен Сорокин (2005-06-22 18:39:00) [23]
> Игорь Шевченко © (22.06.05 18:32) [3]
> А открыть файл с FILE_SHARE_READ + FILE_SHARE_WRITE не помогает
> ?
неа, я уже перепробовал все возможные флаги :)
результат один и тот-же:
32 The process cannot access the file because it is being used by another process. ERROR_SHARING_VIOLATION
я уже даже пробовал открывть его из сервиса с SYSTEM-правами - та же песня.
Игорь Шевченко (2005-06-22 18:32:00) [24]А открыть файл с FILE_SHARE_READ + FILE_SHARE_WRITE не помогает ?
Семен Сорокин (2005-06-22 18:28:00) [25]3 функции:
FSCTL_GET_RETRIEVAL_POINTERS Get information about a file's cluster use.
FSCTL_GET_VOLUME_BITMAP Get a bitmap of cluster allocation.
FSCTL_MOVE_FILE Move all or part of a file from one set of clusters to another within a volume.
FSCTL_GET_VOLUME_BITMAP - возвращает карту диска по занятым/незанятым кластерам без конкретики по файлам...
FSCTL_GET_RETRIEVAL_POINTERS - именно эту я использую для получения информации по отдельному открытому(!) файлу.
FSCTL_MOVE_FILE - непосредственно для дефрагментации...
PS. ведь O&O Defrag как-то показывает расположение того же свопа на диске... наверняка есть какие нибудь функции, а я не знаю куда копать
PPS. можно конечно попробовать вычислить из общей карты диска - вычитанием имеющихся расположений файлов, но, имхо, не то...
Игорь Шевченко (2005-06-22 18:22:00) [26]
> Приветствую гуру, кто может подсказать как получить покластерное
> расположение заблокированного файла на диске, например pagefile.sys
Среди API дефрагментации ничего нету ?