次の方法で共有


PFLT_GENERATE_FILE_NAMEコールバック関数 (fltkernel.h)

フィルター マネージャーの名前キャッシュのファイル名を提供するミニフィルター ドライバーは、ミニフィルター ドライバーの GenerateFileNameCallback ルーチンとして PFLT_GENERATE_FILE_NAME 型のルーチンを登録できます。

構文

PFLT_GENERATE_FILE_NAME PfltGenerateFileName;

NTSTATUS PfltGenerateFileName(
  [in]           PFLT_INSTANCE Instance,
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PFLT_CALLBACK_DATA CallbackData,
  [in]           FLT_FILE_NAME_OPTIONS NameOptions,
  [out]          PBOOLEAN CacheFileNameInformation,
  [out]          PFLT_NAME_CONTROL FileName
)
{...}

パラメーター

[in] Instance

このコールバック ルーチンが登録されているミニフィルター ドライバー インスタンスの不透明なインスタンス ポインター。

[in] FileObject

名前が要求されているファイルのファイル オブジェクトへのポインター。

[in, optional] CallbackData

この名前が要求されている操作のコールバック データ構造へのポインター。 このパラメーターは、FltGetFileNameInformationUnsafe 呼び出してファイルの名前を取得するときに NULL します。

[in] NameOptions

このファイル名情報クエリの名前形式、クエリ メソッド、フラグを指定する値を FLT_FILE_NAME_OPTIONS します。

[out] CacheFileNameInformation

この名前をキャッシュできるかどうかを指定するブール値へのポインター。 名前をキャッシュできる場合は、出力時に TRUE に設定します。それ以外の場合は、FALSE に設定します。

[out] FileName

出力時にファイル名を受け取るフィルター マネージャーによって割り当てられた FLT_NAME_CONTROL 構造体へのポインター。

戻り値

このコールバック ルーチンは、STATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

備考

フィルター マネージャーの名前キャッシュのファイル名を提供するミニフィルター ドライバーは、ミニフィルター ドライバーの GenerateFileNameCallback ルーチンとして PFLT_GENERATE_FILE_NAME 型のルーチンを登録できます。

このコールバック ルーチンを登録するために、ミニフィルター ドライバーは、fltRegisterFilter するパラメーターとして渡す FLT_REGISTRATION 構造体の GenerateFileNameCallback メンバーに PFLT_GENERATE_FILE_NAME 型のルーチンのアドレスを格納します。

フィルター マネージャーはこのコールバック ルーチンを呼び出して、ミニフィルター ドライバー インスタンス スタック内のその上にある他のミニフィルター ドライバーによるファイル名要求をミニフィルター ドライバーがインターセプトできるようにします。 ミニフィルター ドライバーは、このコールバック ルーチンと PFLT_NORMALIZE_NAME_COMPONENT コールバック ルーチンを使用して、独自のファイル名情報を提供できます。

どのファイル名形式が要求されているかを確認するには、NameOptions パラメーター FltGetFileNameFormat を呼び出します。

Windows 8 より前では、このコールバック ルーチンは、開いているファイル名と短いファイル名に対してのみ呼び出されます。 フィルター マネージャーは、正規化されたファイル名の要求を受信すると、このコールバック ルーチンを呼び出して、開いているファイル名を要求します。 次に、ミニフィルター ドライバーの PFLT_NORMALIZE_NAME_COMPONENT コールバックを呼び出して、ファイル名内の各コンポーネントを正規化します。

Windows 8 以降では、正規化された名前に対してこのコールバック ルーチンも呼び出されます。 フィルター マネージャーは、正規化されたファイル名の要求を受け取ると、NameOptions パラメーターで指定されたFLT_FILE_NAME_NORMALIZEDを使用して、このコールバック ルーチンを呼び出します。 ミニフィルターがこのコールバックからSTATUS_SUCCESSを返した場合、ミニフィルターの PFLT_NORMALIZE_NAME_COMPONENT コールバックは呼び出されません。 ミニフィルターがエラー コード (STATUS_NOT_SUPPORTED など) を返した場合、フィルター マネージャーはこのコールバック ルーチンを再度呼び出し、開いているファイル名を要求します。 フィルター マネージャーは、ミニフィルター ドライバーの PFLT_NORMALIZE_NAME_COMPONENT コールバックを呼び出して、ファイル名の各コンポーネントを正規化します。

このコールバック ルーチンが呼び出されると、ミニフィルター ドライバーは、ファイル システムのファイル名情報に基づいて、独自のファイル名情報を生成します。 ファイルのファイル システムのファイル名情報を取得するには、FltGetFileNameInformation 、fltGetFileNameInformationUnsafe 、または FltGetDestinationFileNameInformation を呼び出します。

開いているファイル名の場合、生成されるファイル名情報にボリューム情報が含まれている必要があります。 リモート ファイルの場合は、共有情報も含める必要があります。

リモート ファイルの開かれたファイル名の例を次に示します。

\Device\LanManRedirector\MyServer\MyShare\Docume~1\MyUser\My Documents\TestRe~1.txt:stream1

ファイル名の形式の詳細については、fltParseFileNameInformation FLT_FILE_NAME_INFORMATION およびの参照エントリを参照してください。

ミニフィルター ドライバーは、ファイル名情報を生成した後、FltCheckAndGrowNameControl 呼び出して、FileName パラメーターが指す FLT_NAME_CONTROL 構造体に、生成されたファイル名を保持するのに十分な大きさの名前バッファーが含まれているかどうかを確認する必要があります。 名前バッファーが小さすぎる場合は、FltCheckAndGrowNameControl 大きなバッファーに置き換えられます。 ミニフィルター ドライバーは、ファイル名の情報を名前バッファーに格納し、返します。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー fltkernel.h (Fltkernel.h を含む)
IRQL PASSIVE_LEVEL

関連項目

FLT_CALLBACK_DATA

FLT_FILE_NAME_INFORMATION

FLT_FILE_NAME_OPTIONS

FLT_NAME_CONTROL

FLT_REGISTRATION

FltCheckAndGrowNameControl

FltGetDestinationFileNameInformation

FltGetFileNameFormat

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetFileNameQueryMethod

FltParseFileName する

FltParseFileNameInformation

FltPurgeFileNameInformationCache

FltRegisterFilter

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT

PFLT_NORMALIZE_NAME_COMPONENT_EX