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 を返します。

注釈

ファイル システムは、作成または名前変更されるファイルのディレクトリにファイル名が追加されたときに FsRtlFindInTunnelCache を呼び出すことができます。 FsRtlFindInTunnelCache は 、トンネル キャッシュで DirKey と Name に一致するエントリを検索 します。 見つかった場合、 FsRtlFindInTunnelCache は キャッシュされた情報をフェッチします。

一致は次のように実行されます。

  • DirKey の値は、エントリのディレクトリ キーと比較されます。 (これは、FsRtlAddToTunnelCache に渡された DirectoryKey 値です)。

  • FsRtlAddToTunnelCache の呼び出しで KeyByShortName が TRUE に設定されている場合、Name が指す文字列は、トンネリングされたファイルの短い名前と比較されます。 それ以外の場合は、長い名前と比較されます。

DataLength が指すバッファー長変数の値は、トンネル キャッシュ エントリに格納されているデータの長さ (バイト単位) 以上である必要があります。

呼び出し元は、この呼び出しを FsRtlDeleteTunnelCache と同期する必要があります。 つまり、ファイル システムは、 FsRtlFindInTunnelCacheFsRtlDeleteTunnelCache を異なるスレッドから同時に呼び出さないことを確認する必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

FsRtlDeleteTunnelCache

FsRtlInitializeTunnelCache

UNICODE_STRING