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]
스트림의 이름을 포함하는 유니코드 문자열입니다.
발언
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 반환해야 합니다.
파일 시스템에서 스트림 열거를 지원하지만 파일에 명명되지 않은 기본 데이터 스트림 이외의 스트림이 없는 경우 파일 시스템은 StreamName"::$DATA" 또는 길이가 0인 유니코드 문자열을 포함하는 단일 FILE_STREAM_INFORMATION 구조를 반환해야 합니다.
NTFS는 기본 데이터 스트림에 대한 StreamName "::$DATA"를 반환합니다.
명명된 데이터 스트림의 경우 NTFS는 스트림 이름에 ":$DATA"를 추가합니다. 예를 들어 이름이 "Authors"인 사용자 데이터 스트림의 경우 NTFS는 ":Authors:$DATA"를 StreamName반환합니다.
ZwCreateFile 같은 루틴을 호출하여 명명된 파일 스트림을 열 때 이름의 ":$DATA" 부분을 생략할 수 있습니다. 예를 들어 "Book"이라는 파일의 "Authors" 스트림을 열려면 호출자는 "Book:Authors" 또는 "Book:Authors:$DATA"를 스트림 이름으로 지정할 수 있습니다. 두 이름 모두 동일합니다.
명명된 데이터 스트림에 대한 지원은 파일 시스템 관련입니다. 파일 시스템 필터 드라이버는 다음 방법 중 하나에서 파일 시스템에서 명명된 스트림을 지원하는지 여부를 확인할 수 있습니다.
FltQueryVolumeInformation 또는 ZwQueryVolumeInformationFile 호출하고 FsInformationClass 매개 변수에 FileFsAttributeInformation을 지정합니다. 반환되는 FsInformation 버퍼에는 FILE_FS_ATTRIBUTE_INFORMATION 구조가 포함됩니다. 이 구조체의 FileSystemAttributes 멤버에 FILE_NAMED_STREAMS 비트가 설정된 경우 파일 시스템은 명명된 스트림을 지원합니다.
파일 시스템에 IRP_MJ_QUERY_VOLUME_INFORMATION 요청을 보내고 FsInformationClass 매개 변수에 대한 FileFsAttributeInformation을 지정합니다. 반환되는 Irp->AssociatedIrp.SystemBuffer FILE_FS_ATTRIBUTE_INFORMATION 구조체를 포함합니다. 이 구조체의 FileSystemAttributes 멤버에 FILE_NAMED_STREAMS 비트가 설정된 경우 파일 시스템은 명명된 스트림을 지원합니다.
FILE_STREAM_INFORMATION 구조체는 LONGLONG(8 바이트) 경계에 맞춰야 합니다. 버퍼에 이러한 구조체가 두 개 이상 포함된 경우 NextEntryOffset은 마지막을 제외한 각 항목의 값을 8 바이트 경계에 해당합니다.
요구 사항
요구 | 값 |
---|---|
헤더 | ntifs.h(Ntifs.h, Fltkernel.h 포함) |
참고 항목
fltQueryInformationFile
IRP_MJ_QUERY_VOLUME_INFORMATION
ZwCreateFile
ZwQueryInformationFile