フィルター マネージャーの名前キャッシュのファイル名を提供するミニフィルター ドライバーは、ミニフィルター ドライバーの NormalizeNameComponentCallback ルーチンとしてPFLT_NORMALIZE_NAME_COMPONENT型のルーチンを登録できます。
構文
PFLT_NORMALIZE_NAME_COMPONENT PfltNormalizeNameComponent;
NTSTATUS PfltNormalizeNameComponent(
[in] PFLT_INSTANCE Instance,
[in] PCUNICODE_STRING ParentDirectory,
[in] USHORT VolumeNameLength,
[in] PCUNICODE_STRING Component,
[out] PFILE_NAMES_INFORMATION ExpandComponentName,
[in] ULONG ExpandComponentNameLength,
[in] FLT_NORMALIZE_NAME_FLAGS Flags,
[in, out] PVOID *NormalizationContext
)
{...}
パラメーター
[in] Instance
このコールバック ルーチンが登録されているミニフィルター ドライバー インスタンスの不透明なインスタンス ポインター。
[in] ParentDirectory
この名前コンポーネントの親ディレクトリの名前を含む UNICODE_STRING 構造体へのポインター。
[in] VolumeNameLength
ParentDirectory パラメーターが指す構造体に格納されている親ディレクトリ名の長さ (バイト単位)。
[in] Component
展開する名前コンポーネントを含むUNICODE_STRING構造体へのポインター。
[out] ExpandComponentName
名前コンポーネントの展開された (正規化された) ファイル名情報を受け取る FILE_NAMES_INFORMATION 構造体へのポインター。
[in] ExpandComponentNameLength
ExpandComponentName パラメーターが指すバッファーの長さ (バイト単位)。
[in] Flags
正規化フラグに名前を付けます。 FLTFL_NORMALIZE_NAME_CASE_SENSITIVEは、正規化する名前で大文字と小文字が区別されることを指定します。 FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAMEは、FltGetDestinationFileNameInformation ルーチン呼び出しにサービスを提供するためにコールバック ルーチンが呼び出されたことを指定します。
[in, out] NormalizationContext
同じファイル名パス内の残りのコンポーネントを正規化するために行われる、このコールバック ルーチンへの後続の呼び出しで渡されるミニフィルター ドライバーによって提供されるコンテキスト情報へのポインター。
戻り値
このコールバック ルーチンは、STATUS_SUCCESSまたは適切な NTSTATUS 値を返します。 Component パラメーターが指定する名前コンポーネントが、ParentDirectory パラメーターが指定する親ディレクトリに存在しない場合、このコールバック ルーチンはSTATUS_NO_SUCH_FILEを返す必要があります。 このコールバック ルーチンが親ディレクトリに IRP_MN_QUERY_DIRECTORY (FileNamesInformation) 要求を発行すると、ファイル システムは正しい状態コードを返します。 このような状況では、このコールバックは、ファイル システムが返す状態コードを単に返すことができます。
備考
フィルター マネージャーの名前キャッシュのファイル名を提供するミニフィルター ドライバーは、ミニフィルター ドライバーの NormalizeNameComponentCallback ルーチンとしてPFLT_NORMALIZE_NAME_COMPONENT型のルーチンを登録できます。
このコールバック ルーチンを登録するために、ミニフィルター ドライバーは、PFLT_NORMALIZE_NAME_COMPONENT型のルーチンのアドレスを、ミニフィルター ドライバーが FltRegisterFilter パラメーターとして渡す FLT_REGISTRATION 構造体の NormalizeNameComponentCallback メンバーに格納します。
フィルター マネージャーは、このコールバック ルーチンを呼び出して、ミニフィルター ドライバーの名前が変更されたファイル名パス内のコンポーネントの正規化された名前をミニフィルター ドライバーに照会します。 ファイル名パスにこのようなコンポーネントが複数含まれている場合、フィルター マネージャーは、パス内のすべてのコンポーネントを正規化するプロセスで、このコールバック ルーチンを複数回呼び出すことができます。 ミニフィルター ドライバーは、NormalizationContext パラメーターを使用して、このコールバック ルーチンへの後続の呼び出しにコンテキスト情報を渡すことができます。
ミニフィルター ドライバーで NormalizationContext パラメーターを使用する場合は、正規化コンテキスト クリーンアップ コールバック ルーチンも登録する必要があります。 詳細については、PFLT_NORMALIZE_CONTEXT_CLEANUPの参照エントリを参照してください。
必要条件
| 要件 | 価値 |
|---|---|
| ターゲット プラットフォーム の | デスクトップ |
| ヘッダー | fltkernel.h (Fltkernel.h を含む) |
| IRQL | PASSIVE_LEVEL |
関連項目
FltRegisterFilter の
PFLT_NORMALIZE_CONTEXT_CLEANUP