# AnalyseW

Far Manager вызывает функцию `AnalyseW` для открытия панели плагина, эмулирующего файловую систему на базе переданного этой функции файла (например, архива).

    HANDLE WINAPI AnalyseW(
      const struct AnalyseInfo *Info
    );

### Параметры

Info
Указатель на структуру AnalyseInfo - информация, переданная Far Manager'ом, для анализа плагином содержимого файла.
В начале функции проверьте, что поле `AnalyseInfo.StructSize >= sizeof(AnalyseInfo)`.

### Возвращаемое значение

Если плагин обрабатывает переданный файл и на базе него эмулирует файловую систему, то плагин должен возвращать описатель, отличный от `NULL` (`INVALID_HANDLE_VALUE` считается валидным описателем).

### Замечания

1. Возвращенный плагином описатель будет равен значению поля OpenAnalyseInfo.Handle в функции OpenW(OPEN_ANALYSE,...).
2. Плагин должен освободить память выделенную под описатель в функции CloseAnalyseW (значение поля CloseAnalyseInfo.Handle).
3. Если плагин будет эмулировать файловую систему, то необходимо сохранить значение поля `AnalyseInfo.FileName` во внутренних переменных, т.к. позже оно может понадобиться плагину.
4. Far Manager при нажатии `Enter` на выбранном файле опрашивает все плагины, экспортирующих эту функцию. Плагины просматриваются в алфавитном порядке (по имени DLL-модуля) и кто первый вернул значение, отличное от `NULL` - тому и отдаётся управление. Данное поведение по умолчанию дополнительно регулируется опцией Far Manager "Параметры менеджера плагинов" - "Обработка файла", если опция включена, то будет показано меню со всеми плагинами, экспортирующими эту функцию (подробности смотрите в файле помощи Far Manager).

### Пример

Пример из плагина "TmpPanel".

    HANDLE WINAPI AnalyseW(const struct AnalyseInfo *Info)
    {
      if (Info->FileName == nullptr || !Info->BufferSize)
        return nullptr;

      if (!FSF.ProcessName(Opt.Mask, (wchar_t*)Info->FileName, lstrlen(Info->FileName),PN_CMPNAMELIST))
        return nullptr;

      return HANDLE(1); // будем эмулировать панель на базе переданного Far Manager'ом файла
    }

Смотрите также:
CloseAnalyseW