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

指向包含要重命名或创建的文件的新名称的 Unicode 字符串的指针。

[out] ShortName

指向调用方分配的 Unicode 字符串的指针,以接收隧道文件的短名称。 此字符串必须足够长,才能保存完整的 8.3 文件名。 (与 LongName不同,ShortName 不会动态增长。

[out] LongName

指向调用方分配的 Unicode 字符串的指针,用于接收隧道文件的长名称。 如果此字符串不足以容纳隧道名称,FsRtlFindInTunnelCache 将其替换为更大的系统分配字符串。 如果分配了此类字符串,则调用方负责检测此情况,并释放新的系统分配字符串以及原始调用方分配的字符串。

[in, out] DataLength

在输入时,这是一个指向变量的指针,该变量指定 数据指向的缓冲区的长度。 在输出中,同一变量接收写入缓冲区的数据长度(以字节为单位)。

[out] Data

指向调用方分配的缓冲区的指针,用于接收在隧道缓存中找到的数据。

返回值

如果隧道缓存中找到匹配项,则 FsRtlFindInTunnelCache 返回 TRUE,否则返回 FALSE。

言论

将文件名添加到正在创建或重命名的文件的目录中时,文件系统可以调用 FsRtlFindInTunnelCacheFsRtlFindInTunnelCache 在隧道缓存中搜索与 DirKey 匹配的 条目,并 名称。 如果找到一个,FsRtlFindInTunnelCache 提取缓存的信息。

匹配按如下方式执行:

  • DirKey 的值与条目的目录键进行比较。 (这是传递给 FsRtlAddToTunnelCacheDirectoryKey 值。

  • 如果在调用 FsRtlAddToTunnelCacheKeyByShortName 设置为 TRUE,则 名称 指向的字符串与隧道文件的短名称进行比较。 否则,它会与长名称进行比较。

DataLength 指向的缓冲区长度变量的值必须大于或等于隧道缓存条目中存储的数据的长度(以字节为单位)。

调用方需要针对 FsRtlDeleteTunnelCache同步此调用。 换句话说,文件系统必须确保它不会从不同的线程同时调用 FsRtlFindInTunnelCacheFsRtlDeleteTunnelCache

要求

要求 价值
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

FsRtlDeleteTunnelCache

FsRtlInitializeTunnelCache

UNICODE_STRING