PluginPanelItem
Структура
PluginPanelItem
описывает элемент файловой системы плагина. Она используется для возвращения информации о файловой системе плагина и для передачи плагину списка файлов для обработки.
struct PluginPanelItem { FILETIME CreationTime; FILETIME LastAccessTime; FILETIME LastWriteTime; FILETIME ChangeTime; unsigned __int64 FileSize; unsigned __int64 AllocationSize; const wchar_t *FileName; const wchar_t *AlternateFileName; const wchar_t *Description; const wchar_t *Owner; const wchar_t * const *CustomColumnData; size_t CustomColumnNumber; PLUGINPANELITEMFLAGS Flags; struct { void *Data; FARPANELITEMFREECALLBACK FreeData; } UserData; uintptr_t FileAttributes; uintptr_t NumberOfLinks; uintptr_t CRC32; intptr_t Reserved[2]; };
Элементы
CreationTime
Время создания - структура FILETIME содержащая время создания файла. FindFirstFile
и FindNextFile
возвращают время файла в UTC-формате. Эти функции устанавливают элементы FILETIME в ноль, если файловая система, содержащая файл не поддерживает этот временной атрибут.
Вы можете использовать функцию FileTimeToLocalFileTime
для преобразования из UTC в локальное время и тогда использовать
функцию FileTimeToSystemTime
для преобразования локального времени в структуру SYSTEMTIME
содержащую отдельные элементы для месяца, дня, года и так далее...
LastAccessTime
Структура FILETIME с временем последнего доступа к файлу. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
LastWriteTime
Структура FILETIME с временем последней записи в файл. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
ChangeTime
Структура FILETIME с временем последнего изменения файла. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
FileSize
Размер файла в байтах.
AllocationSize
Выделенный размер файла в байтах.
FileName
Указатель на строку с именем файла.
AlternateFileName
Указатель на строку с альтернативным именем файла.
Description
Указывает на описание файла. Плагин может использовать это поле для передачи описания файла Far Manager'у. Если вы не хотите указывать описания, установите
Description
в NULL
. Если плагин
использует стандартную обработку описаний Far Manager'а, и передал имена описаний Far Manager'у в функции GetOpenPanelInfoW, это поле также должно быть NULL
.Owner
Указывает на имя владельца файла. Плагин может использовать это поле для передачи имён владельцев файлов Far Manager'у. Если Вам это не нужно, установите это поле в
NULL
.CustomColumnData
Указывает на массив адресов строк для определённых плагином типов колонок. Первая строка содержит данные для типа колонки C0, вторая - для C1 и т.д. Может быть задано до 100 дополнительных типов колонок от
C0
до C99
. Если вы не нуждаетесь в дополнительных типах колонок, установите это поле в NULL
.CustomColumnNumber
Число строк с данными о дополнительных типах колонок.
Flags
Может быть комбинацией следующих значений (тип PLUGINPANELITEMFLAGS):
Флаг | Описание |
---|---|
PPIF_PROCESSDESCR | Использовать внутреннюю обработку описаний Far Manager'а. Этот флаг может быть установлен для обрабатываемых файлов в функциях DeleteFilesW, GetFilesW и PutFilesW. В этом случае Far Manager будет обновлять файлы описаний с именами, возвращёнными в функции GetOpenPanelInfoW. |
PPIF_SELECTED | Этот флаг отвечает за выделение элемента. В функциях PutFilesW, GetFilesW и ProcessHostFileW, если операция не удалась, но часть файлов была успешно обработана, плагин может убрать выделение только с обработанных файлов. Для этого плагин должен очистить флаг PPIF_SELECTED у обрабатываемых элементов в переданном функции списке PluginPanelItem . |
PPIF_NONE | Нулевой флаг. |
UserData
Это поле может быть использовано плагином для хранения целого значения или указателя на структуру данных.
В последнем случае, когда
В последнем случае, когда
UserData.Data
указывает на структуру данных и требуется её освобождение, то плагин должен определить функцию UserData.FreeData, используемую Far Manager'ом для освобождения занятых ресурсов.FileAttributes
Указывает атрибуты найденного файла. Этот элемент может быть комбинацией следующих значений:
Атрибут | Описание |
---|---|
FILE_ATTRIBUTE_ARCHIVE | Это архивный файл. Приложения должны использовать этот флаг для копирования, архивирования или удаления. |
FILE_ATTRIBUTE_COMPRESSED | Файл или каталог сжат. Для файла это означает, что все данные его сжаты, для каталога - что компрессия по умолчанию применяется ко всем его файлам и подкаталогам. |
FILE_ATTRIBUTE_DIRECTORY | Это каталог. |
FILE_ATTRIBUTE_ENCRYPTED | Файл или каталог зашифрован. Для файла, это означает, что все данные в файле зашифрованы. Для директория, это означает, что шифрование является умолчанием для вновь созданных файлов и подкаталогов. |
FILE_ATTRIBUTE_HIDDEN | Файл скрыт. Такой файл не включается в обычный листинг каталога. |
FILE_ATTRIBUTE_NORMAL | У этого файла не установлены другие атрибуты. Это значение корректно только при использовании без остальных флагов. |
FILE_ATTRIBUTE_OFFLINE | Данные файла не доступны непосредственно. Означает, что реальные данные файла были физически перемещены на устройства хранения. |
FILE_ATTRIBUTE_READONLY | Файл только для чтения. Приложения могут читать такой файл, но не могут записывать или удалять его. |
FILE_ATTRIBUTE_REPARSE_POINT | Каталог является точкой повторной обработки. |
FILE_ATTRIBUTE_SPARSE_FILE | Файл является т.н. "Sparse file". |
FILE_ATTRIBUTE_SYSTEM | Этот файл - часть операционной системы. |
FILE_ATTRIBUTE_TEMPORARY | Это временный файл. Приложения должны записывать в такой файл только в крайней необходимости. Большая часть данных файла находится в памяти и не сбрасывается на диск, так как файл будет удален. |
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED | Этот файл или каталог не будут индексироваться службой индексирования. |
FILE_ATTRIBUTE_VIRTUAL | Этот файл - виртуальный файл. |
NumberOfLinks
Количество жёстких ссылок.
CRC32
Контрольная сумма. Far Manager не использует это поле. Если плагин использует это поле, необходимо выставить флаг OPIF_USECRC32.
Reserved
Поля зарезервированы для будущего использования. Установите в
0
.Замечания
- Все данные, выделенные плагином для членов
FileName
,AlternateFileName
,Description
,Owner
иCustomColumnData
, должны быть освобождены им. Far Manager создаёт копии этих данных в своих внутренних структурах. Таким образом они могут быть освобождены в любой момент после передачи Far Manager'у в функции GetFindDataW. - При запросе файлового объекта с панели Far Manager'а - если файл имеет длинное имя, то полное имя возвращается в элементе
FileName
, а усеченная версия формата 8.3 сохраняется вAlternateFileName
. ИначеAlternateFileName
пусто. - При запросе файлового объекта с панели плагина -
AlternateFileName
может содержать любую строку сформированную плагином, т.е. за содержимое отвечает опрашиваемый плагин. - Не все файловые системы позволяют хранить время создания файла и последнего доступа к нему, и не все системы хранят их одинаково. Например, в файловой системе FAT под Windows NT время создания файла записывается с разрешением 10 миллисекунд, время последней модификации - 2 секунды, а время доступа - 1 день (то есть, фактически, записывается только дата доступа). На файловой системе NTFS время доступа имеет разрешение 1 час.
Смотрите также: