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

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

[out] Data

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

返回值

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

注解

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

按如下方式执行匹配:

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

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

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

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

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

FsRtlDeleteTunnelCache

FsRtlInitializeTunnelCache

UNICODE_STRING