структура FLT_FILE_NAME_INFORMATION (fltkernel.h)
Структура FLT_FILE_NAME_INFORMATION содержит сведения об имени файла.
Синтаксис
typedef struct _FLT_FILE_NAME_INFORMATION {
USHORT Size;
FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
FLT_FILE_NAME_OPTIONS Format;
UNICODE_STRING Name;
UNICODE_STRING Volume;
UNICODE_STRING Share;
UNICODE_STRING Extension;
UNICODE_STRING Stream;
UNICODE_STRING FinalComponent;
UNICODE_STRING ParentDir;
} FLT_FILE_NAME_INFORMATION, *PFLT_FILE_NAME_INFORMATION;
Члены
Size
Размер структуры FLT_FILE_NAME_INFORMATION в байтах.
NamesParsed
Битовая маска флагов, указывающих, какие компоненты имен были проанализированы из строки Nameметодом FltParseFileNameInformation. Обратите внимание, что при анализе строки NameFltParseFileNameInformation устанавливает этот флаг для каждого компонента независимо от того, присутствует ли компонент в строке. Эти значения можно объединить с помощью оператора OR.
Flag | Компонент |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | FinalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | Расширение |
FLTFL_FILE_NAME_PARSED_STREAM | Поток |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
Формат сведений об имени, хранящихся в элементе Name . Этот элемент может быть одним из следующих значений. (Описание этих форматов см. в следующем разделе о примечаниях.)
Значение | Значение |
---|---|
FLT_FILE_NAME_NORMALIZED | Элемент Name содержит нормализованное имя файла. |
FLT_FILE_NAME_OPENED | Элемент Name содержит имя, которое использовалось при открытии файла. Эта строка имени не нормализована. |
FLT_FILE_NAME_SHORT | Элемент Name содержит короткое (8.3) имя файла. Краткое имя файла не включает имя тома, путь к каталогу или имя потока. Эта строка имени не нормализована. |
Name
UNICODE_STRING структура, содержащая строку имени файла, отформатированную в соответствии с элементом Format .
Volume
UNICODE_STRING структура, содержащая имя тома, проанализированное из строки Name . Если параметр Format имеет значение FLT_FILE_NAME_SHORT, Volume.Length равен нулю.
Share
UNICODE_STRING структура, содержащая имя сетевого ресурса, проанализированное из строки Имя удаленного файла. Если параметр Format имеет значение FLT_FILE_NAME_SHORT, Share.Length равен нулю.
Extension
UNICODE_STRING структуры, содержащей расширение, проанализированное из строки Name . Если расширение не найдено, параметр FltParseFileNameInformation задает значение Extension.Length равным нулю.
Stream
UNICODE_STRING структуры, содержащей имя потока, проанализированное из строки Name . Если имя потока не найдено или если параметр Format имеет значение FLT_FILE_NAME_SHORT, FltParseFileNameInformation задает Stream. Длина до нуля.
FinalComponent
UNICODE_STRING структура, содержащая окончательный компонент имени, проанализированный из строки Name . Если окончательное имя компонента не найдено или если параметр Format имеет значение FLT_FILE_NAME_SHORT, Параметр FltParseFileNameInformation задает для Параметра FinalComponent.Length значение 0.
ParentDir
UNICODE_STRING структуры, содержащей имя родительского каталога, проанализированное из строки Имяс помощью FltParseFileNameInformation. Если имя родительского каталога не найдено или значение Format FLT_FILE_NAME_SHORT, Параметр FltParseFileNameInformation задает для Параметра ParentDir.Length значение 0.
Комментарии
Элемент Name содержит один из следующих элементов:
- Нормализованное имя файла
- Открытое имя файла
- Короткое имя файла
- Он содержит полный путь к каталогу для файла, включая имя тома, если пользователь не открыл файл по идентификатору файла, но не имеет права обхода для всего пути. (Дополнительные сведения см. в разделе FltGetFileNameInformation.)
- Имя тома — это неперсистентное имя объекта устройства тома (например, "\Device\HarddiskVolume1").
- Все короткие имена разворачиваются до эквивалентных длинных имен.
- Все конечные строки ":$DATA" или "::$DATA" удаляются из имени потока.
- Все точки подключения разрешаются.
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
Ниже приведен пример нормализованного имени файла для удаленного файла:
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
Открытое имя файла — это имя, которое использовалось при открытии файла. Как и нормализованное имя, оно содержит полный путь к каталогу для файла, включая имя тома. Оно отличается от нормализованного имени следующим образом:
- Путь к каталогу для файла может содержать как короткие, так и длинные имена.
- Строки ":$DATA" и "::$DATA" не удаляются из имени потока.
- Точки подключения не разрешаются.
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA
Ниже приведен пример имени открытого файла для удаленного файла.
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
Короткое имя файла — это короткое (8.3) имя для конечного компонента имени файла. Так как он создается при открытии файла, короткое имя недоступно для неоткрытого объекта файла и недоступно в пути создания диспетчеризации ("предварительное создание"). Он также недоступен для объектов файлов потока NTFS. Не все открытые файлы имеют короткие имена файлов. Например, в разделах NTFS, где было отключено создание коротких имен файлов, файлы не имеют коротких имен файлов.
Ниже приведен пример короткого имени файла:
TestRe~1.txt
Чтобы получить структуру FLT_FILE_NAME_INFORMATION для файла, вызовите fltGetFileNameInformation, FltGetFileNameInformationUnsafe или FltGetDestinationFileNameInformation. Эти подпрограммы возвращают указатель на структуру FLT_FILE_NAME_INFORMATION, принадлежающую диспетчеру фильтров, которая является общей для всех минифильтров.
Хотя она содержит множество UNICODE_STRING структур, структура FLT_FILE_NAME_INFORMATION не занимает много места в памяти, так как все UNICODE_STRING структуры в FLT_FILE_NAME_INFORMATION структуре используют один буфер.
Чтобы проанализировать содержимое строки Name , вызовите FltParseFileNameInformation. Эта подпрограмма задает значения элементов Extension, Stream, FinalComponent, ParentDir и NamesParsed этой структуры.
Минифильтры отвечают за вызов FltReleaseFileNameInformation , чтобы освободить структуру FLT_FILE_NAME_INFORMATION, когда она больше не нужна.
Требования
Требование | Значение |
---|---|
Заголовок | fltkernel.h (включая Fltkernel.h) |
См. также раздел
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe