Поделиться через


Функция FsRtlFindInTunnelCache (ntifs.h)

FsRtlFindInTunnelCache выполняет поиск соответствующей записи в кэше туннеля, соответствующего указанному имени.

Синтаксис

BOOLEAN FsRtlFindInTunnelCache(
  [in]      TUNNEL         *Cache,
            ULONGLONG      DirectoryKey,
  [in]      UNICODE_STRING *Name,
  [out]     UNICODE_STRING *ShortName,
  [out]     UNICODE_STRING *LongName,
  [in, out] ULONG          *DataLength,
  [out]     VOID           *Data
);

Параметры

[in] Cache

Указатель на кэш туннеля, инициализированный FsRtlInitializeTunnelCache.

DirectoryKey

Ключевое значение каталога, содержащего созданный или переименованный файл.

[in] Name

Указатель на строку Юникода, содержащую новое имя файла, переименованного или созданного.

[out] ShortName

Указатель на строку Юникода, выделенную вызывающим объектом, чтобы получить короткое имя туннелированного файла. Эта строка должна быть достаточно длинной для хранения полного имени файла 8.3. (В отличие от LongName, ShortName не растет динамически.)

[out] LongName

Указатель на строку Юникода, выделенную вызывающим объектом, чтобы получить длинное имя туннелированного файла. Если эта строка недостаточно велика для хранения туннелированного имени, FsRtlFindInTunnelCache заменяет ее более крупной выделенной системой строкой. Если такая строка выделена, вызывающий отвечает за обнаружение этого дела и освобождение новой выделенной системой строки, а также исходной строки, выделенной вызывающим объектом.

[in, out] DataLength

При входных данных это указатель на переменную, указывающую длину буфера, на которую указывает данные. При выходе та же переменная получает длину в байтах данных, записанных в буфер.

[out] Data

Указатель на выделенный вызывающим буфером для получения данных, найденных в кэше туннеля.

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

FsRtlFindInTunnelCache возвращает значение TRUE, если соответствующая запись найдена в кэше туннеля, значение FALSE в противном случае.

Замечания

Файловые системы могут вызывать FsRtlFindInTunnelCache при добавлении имени файла в каталог для создаваемого или переименованного файла. FsRtlFindInTunnelCache выполняет поиск кэша туннеля для записи, которая соответствует DirKey и Name. Если он найден, FsRtlFindInTunnelCache извлекает кэшированные сведения.

Совпадение выполняется следующим образом:

  • Значение DirKey сравнивается с ключом каталога записи. (Это значение DirectoryKey, переданное FsRtlAddToTunnelCache.)

  • Если KeyByShortName было задано значение TRUE в вызове FsRtlAddToTunnelCache, строка, указываемая Name, сравнивается с коротким именем туннелированного файла. В противном случае оно сравнивается с длинным именем.

Значение переменной длины буфера, указываемой на DataLength, должно быть больше или равно длине в байтах данных, хранящихся в записи кэша туннеля.

Вызывающий объект требуется для синхронизации этого вызова с FsRtlDeleteTunnelCache. Другими словами, файловая система должна гарантировать, что она не вызывает FsRtlFindInTunnelCache и FsRtlDeleteTunnelCache одновременно из разных потоков.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

FsRtlDeleteTunnelCache

FsRtlInitializeTunnelCache

UNICODE_STRING