Работа с занятыми файлами

Тема в разделе "WASM.WIN32", создана пользователем qvant, 21 авг 2006.

  1. qvant

    qvant New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2006
    Сообщения:
    38
    В статье Ms-Rem'а описан способ работы c занятыми файлами с помощью прямого доступа к диску.
    Но чтобы получить карту кластеров на томе нужно сперва открыть файл передав его хэндл
    DeviceIoControl.. А открыть его нельзя т.к. он занят.. Или я что-то не так понял?
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    не файл, а диск:

    CreateFile("\\\\.\\PhysicalDriveX", ...)

    где, X - номер физического диска (zero-based)
     
  3. qvant

    qvant New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2006
    Сообщения:
    38
    Диск открывается для чтения кластеров, а для получения карты кластеров нужно
    открыть файл
    ...
    hFile = CreateFile(lpFileName, FILE_READ_ATTRIBUTES,
    FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
    NULL, OPEN_EXISTING, 0, 0);
    ...
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    qvant
    Показанный тобою код - доступ к данным файла.
    Что есть "карта кластеров"?
     
  5. qvant

    qvant New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2006
    Сообщения:
    38
    ..
    hFile = CreateFile(lpFileName, FILE_READ_ATTRIBUTES,
    FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
    NULL, OPEN_EXISTING, 0, 0);
    ...
    if (DeviceIoControl(hFile, FSCTL_GET_RETRIEVAL_POINTERS, &InBuf,
    sizeof(InBuf), OutBuf, OutSize, &Bytes, NULL))
    {

    http://wasm.ru/article.php?article=lockfileswork - метод прямого доступа к диску.
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    qvant
    Обрати внимание на второй параметр CreateFile - FILE_READ_ATTRIBUTES, т.е. доступ к данным файла не запрашивается, + смотри в конце описания метода "... Таким способом можно читать только файлы которые можно открыть с доступом FILE_READ_ATTRIBUTES ..."
     
  7. qvant

    qvant New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2006
    Сообщения:
    38
    Мдя.. вот вам и методы скоростного чтение :) Спасибо!