FILE_STREAM_INFORMATION構造体 (ntifs.h)
FILE_STREAM_INFORMATION 構造体は、ファイルのストリームを列挙するために使用されます。
構文
typedef struct _FILE_STREAM_INFORMATION {
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER StreamSize;
LARGE_INTEGER StreamAllocationSize;
WCHAR StreamName[1];
} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
メンバーズ
NextEntryOffset
次のFILE_STREAM_INFORMATIONエントリのオフセット。 このメンバーの後に他のエントリがない場合、このメンバーは 0 になります。
StreamNameLength
StreamName 文字列の長さ (バイト単位)。
StreamSize
ストリームのサイズ (バイト単位)。
StreamAllocationSize
ファイル ストリームの割り当てサイズ (バイト単位)。 通常、この値は、基になる物理デバイスのセクターまたはクラスター サイズの倍数です。
StreamName[1]
ストリームの名前を含む Unicode 文字列。
備考
FILE_STREAM_INFORMATION構造体は、ファイルのストリームを列挙するために使用されます。 この操作は、次のいずれかの方法で実行できます。
FltQueryInformationFile または ZwQueryInformationFile を
呼び出し、 FileInformationClass パラメーターに FileStreamInformation を指定します。 返された FileInformation バッファーには、各ファイル ストリームのFILE_STREAM_INFORMATION構造体が含まれます。IRP_MJ_QUERY_INFORMATION要求をファイル システムに送信し、FileInformationClass パラメーターに FileStreamInformation を指定します。 戻り値 Irp->AssociatedIrp.SystemBuffer には、各ファイル ストリームのFILE_STREAM_INFORMATION構造体が含まれます。
この情報を照会するために、特定のアクセス権は必要ありません。 したがって、この情報は、ファイルが開いている限り使用できます。
ストリーム列挙のサポートは、ファイル システムに依存します。 ファイル システムがストリーム列挙をサポートしていない場合は、これらの要求のSTATUS_INVALID_PARAMETERまたはSTATUS_NOT_IMPLEMENTEDを返す必要があります。
ファイル システムがストリーム列挙をサポートしているが、ファイルに既定のデータ ストリーム (名前なし) 以外のストリームがない場合、ファイル システムは、"::$DATA" または長さ 0 の Unicode 文字列を含む単一のFILE_STREAM_INFORMATION構造体を StreamNameとして返す必要があります。
NTFS は、既定のデータ ストリームの StreamName として "::$DATA" を返します。
名前付きデータ ストリームの場合、NTFS はストリーム名に ":$DATA" を追加します。 たとえば、"Authors" という名前のユーザー データ ストリームの場合、NTFS は StreamNameとして ":Authors:$DATA" を返します。
ZwCreateFile などのルーチンを呼び出して名前付きファイル ストリームを開く場合は、名前の ":$DATA" 部分を省略できます。 たとえば、"Book" という名前のファイルの "Authors" ストリームを開くには、呼び出し元でストリーム名として "Book:Authors" または "Book:Authors:$DATA" を指定できます。 どちらの名前も同じです。
名前付きデータ ストリームのサポートは、ファイル システム固有です。 ファイル システム フィルター ドライバーは、ファイル システムが次のいずれかの方法で名前付きストリームをサポートするかどうかを判断できます。
FltQueryVolumeInformation または ZwQueryVolumeInformationFile
呼び出し、 FsInformationClass パラメーターに FileFsAttributeInformation を指定します。 返された FsInformation バッファーには、FILE_FS_ATTRIBUTE_INFORMATION構造体が含まれます。 FILE_NAMED_STREAMS ビットがこの構造体の FileSystemAttributes メンバーに設定されている場合、ファイル システムは名前付きストリームをサポートします。IRP_MJ_QUERY_VOLUME_INFORMATION要求をファイル システムに送信し、FsInformationClass パラメーターに FileFsAttributeInformation を指定します。 戻り値 Irp->AssociatedIrp.SystemBuffer には、FILE_FS_ATTRIBUTE_INFORMATION構造体が含まれています。 FILE_NAMED_STREAMS ビットがこの構造体の FileSystemAttributes メンバーに設定されている場合、ファイル システムは名前付きストリームをサポートします。
FILE_STREAM_INFORMATION構造体は、LONGLONG (8 バイト) 境界に配置する必要があります。 バッファーにこれらの構造体が 2 つ以上含まれている場合、NextEntryOffset 各エントリの値 (最後を除く) は 8 バイトの境界に置きます。
必要条件
要件 | 価値 |
---|---|
ヘッダー | ntifs.h (Ntifs.h、Fltkernel.h を含む) |
関連項目
FltQueryInformationFile の
FltQueryVolumeInformation の