FLT_FILE_NAME_INFORMATION 構造体 (fltkernel.h)
FLT_FILE_NAME_INFORMATION構造体には、ファイル名の情報が含まれています。
構文
typedef struct _FLT_FILE_NAME_INFORMATION {
USHORT Size;
FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
FLT_FILE_NAME_OPTIONS Format;
UNICODE_STRING Name;
UNICODE_STRING Volume;
UNICODE_STRING Share;
UNICODE_STRING Extension;
UNICODE_STRING Stream;
UNICODE_STRING FinalComponent;
UNICODE_STRING ParentDir;
} FLT_FILE_NAME_INFORMATION, *PFLT_FILE_NAME_INFORMATION;
メンバー
Size
FLT_FILE_NAME_INFORMATION構造体のサイズ (バイト単位)。
NamesParsed
FltParseFileNameInformation によって Name 文字列から解析された名前コンポーネントを示すフラグのビットマスク。 Name 文字列を解析するときに、FltParseFileNameInformation は、コンポーネントが文字列内に存在することが検出されたかどうかに関係なく、各コンポーネントにこのフラグを設定することに注意してください。 これらの値は、OR 演算子を使用して組み合わせることができます。
フラグ | コンポーネント |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | FinalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | 拡張子 |
FLTFL_FILE_NAME_PARSED_STREAM | Stream |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
Name メンバーに格納されている名前情報の形式。 このメンバーには、次のいずれかの値を指定できます。 (これらの形式の説明については、次の「解説」セクションを参照してください)。
値 | 意味 |
---|---|
FLT_FILE_NAME_NORMALIZED | Name メンバーには、ファイルの正規化された名前が含まれています。 |
FLT_FILE_NAME_OPENED | Name メンバーには、ファイルを開いたときに使用された名前が含まれます。 この名前の文字列は正規化されません。 |
FLT_FILE_NAME_SHORT | Name メンバーには、ファイルの短い (8.3) 名が含まれています。 ファイルの短い名前には、ボリューム名、ディレクトリ パス、またはストリーム名は含まれません。 この名前の文字列は正規化されません。 |
Name
UNICODE_STRINGFormat メンバーで 指定された形式のファイル名文字列を含む構造体です。
Volume
name 文字列から 解析されたボリューム名を含む構造体をUNICODE_STRINGします。 Format がFLT_FILE_NAME_SHORTの場合、Volume.Length は 0 です。
Share
UNICODE_STRINGリモート ファイルの Name 文字列から解析されたネットワーク共有名を含む構造体です。 Format がFLT_FILE_NAME_SHORTの場合、Share.Length は 0 です。
Extension
name 文字列から解析された拡張子を含む構造体をUNICODE_STRINGします。 拡張子が見つからない場合、 FltParseFileNameInformation は Extension.Length を 0 に設定します。
Stream
name 文字列から 解析されたストリーム名を含む構造体をUNICODE_STRINGします。 ストリーム名が見つからない場合、または Format がFLT_FILE_NAME_SHORTの場合、FltParseFileNameInformation はStream設定します。長さは 0 です。
FinalComponent
name 文字列から 解析された最終的な名前コンポーネントを含む構造体をUNICODE_STRINGします。 最終的なコンポーネント名が見つからない場合、または Format がFLT_FILE_NAME_SHORT場合、 FltParseFileNameInformationは FinalComponent.Length を 0 に設定します。
ParentDir
UNICODE_STRING FltParseFileNameInformation によって Name 文字列から解析された親ディレクトリ名を含む構造体です。 親ディレクトリ名が見つからない場合、または Format がFLT_FILE_NAME_SHORTの場合、 FltParseFileNameInformation は ParentDir.Length を 0 に設定します。
注釈
Name メンバーには、次のいずれかが含まれます。
- ファイルの正規化された名前
- ファイルの開かれた名前
- ファイルの短い名前
- ユーザーがファイル ID でファイルを開いたが、パス全体に対する走査特権がない場合を除き、ボリューム名を含むファイルの完全なディレクトリ パスが含まれます。 (詳細については、「 FltGetFileNameInformation」を参照してください)。
- ボリューム名は、ボリュームの非永続デバイス オブジェクト名 ("\Device\HarddiskVolume1" など) です。
- すべての短い名前は、同等の長い名前に展開されます。
- 末尾の ":$DATA" または "::$DATA" 文字列は、ストリーム名から削除されます。
- すべてのマウント ポイントが解決されます。
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
リモート ファイルの正規化されたファイル名の例を次に示します。
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
ファイルの 開いた名前 は、ファイルを開いたときに使用された名前です。 正規化された名前と同様に、ボリューム名を含むファイルの完全なディレクトリ パスが含まれます。 これは、次の点で正規化された名前とは異なります。
- ファイルのディレクトリ パスには、短い名前と長い名前を含めることができます。
- 末尾の ":$DATA" 文字列と "::$DATA" 文字列はストリーム名から削除されません。
- マウント ポイントは解決されません。
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA
リモート ファイルの開かれたファイル名の例を次に示します。
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
ファイルの 短い名前 は、ファイル名の最後のコンポーネントの短い (8.3) 名です。 ファイルを開いたときに生成されるため、開いていないファイル オブジェクトでは短い名前を使用できません。また、作成ディスパッチ ("事前作成") パスでは使用できません。 NTFS ストリーム ファイル オブジェクトでは使用できません。 開いているすべてのファイルに短いファイル名があるわけではありません。 たとえば、短いファイル名の生成が無効になっている NTFS パーティションでは、短いファイル名を持つファイルはありません。
ファイルの短い名前の例を次に示します。
TestRe~1.txt
ファイルのFLT_FILE_NAME_INFORMATION構造体を取得するには、 FltGetFileNameInformation、 FltGetFileNameInformationUnsafe、または FltGetDestinationFileNameInformation を呼び出します。 これらのルーチンは、すべてのミニフィルターによって共有されるフィルター マネージャー所有のFLT_FILE_NAME_INFORMATION構造体へのポインターを返します。
多数のUNICODE_STRING構造体が含まれていますが、FLT_FILE_NAME_INFORMATION構造体内のすべてのUNICODE_STRING構造体が 1 つのバッファーを共有するため、FLT_FILE_NAME_INFORMATION構造体はメモリ内の領域をあまり占有しません。
Name 文字列の内容を解析するには、FltParseFileNameInformation を呼び出します。 このルーチンは、この構造体の Extension、Stream、FinalComponent、ParentDir、NamesParsed メンバーの値を設定します。
ミニフィルターは、 FltReleaseFileNameInformation を呼び出して、不要になったときにFLT_FILE_NAME_INFORMATION構造体を解放する役割を担います。
要件
要件 | 値 |
---|---|
Header | fltkernel.h (Fltkernel.h を含む) |
こちらもご覧ください
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe