Функция 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

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

[out] Data

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

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

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

Комментарии

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

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

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

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

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

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

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также раздел

FsRtlDeleteTunnelCache

FsRtlInitializeTunnelCache

UNICODE_STRING