struktur FILE_STREAM_INFORMATION (ntifs.h)
Struktur FILE_STREAM_INFORMATION digunakan untuk menghitung aliran untuk file.
Sintaks
typedef struct _FILE_STREAM_INFORMATION {
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER StreamSize;
LARGE_INTEGER StreamAllocationSize;
WCHAR StreamName[1];
} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
Anggota
NextEntryOffset
Offset entri FILE_STREAM_INFORMATION berikutnya. Anggota ini nol jika tidak ada entri lain yang mengikuti yang satu ini.
StreamNameLength
Panjang, dalam byte, dari string StreamName .
StreamSize
Ukuran, dalam byte, dari aliran.
StreamAllocationSize
Ukuran alokasi aliran file, dalam byte. Biasanya nilai ini adalah kelipatan sektor atau ukuran kluster dari perangkat fisik yang mendasar.
StreamName[1]
Untai (karakter) Unicode yang berisi nama aliran.
Keterangan
Struktur FILE_STREAM_INFORMATION digunakan untuk menghitung aliran untuk file. Operasi ini dapat dilakukan dengan salah satu cara berikut:
Dengan memanggil FltQueryInformationFile atau ZwQueryInformationFile dan menentukan FileStreamInformation untuk parameter FileInformationClass . Saat dikembalikan, buffer FileInformation berisi struktur FILE_STREAM_INFORMATION untuk setiap aliran file.
Dengan mengirim permintaan IRP_MJ_QUERY_INFORMATION ke sistem file dan menentukan FileStreamInformation untuk parameter FileInformationClass . Saat dikembalikan, Irp-AssociatedIrp.SystemBuffer> berisi struktur FILE_STREAM_INFORMATION untuk setiap aliran file.
Tidak diperlukan hak akses khusus untuk mengkueri informasi ini. Dengan demikian informasi ini tersedia selama file terbuka.
Dukungan untuk enumerasi aliran bergantung pada sistem file. Jika sistem file tidak mendukung enumerasi aliran, sistem harus mengembalikan STATUS_INVALID_PARAMETER atau STATUS_NOT_IMPLEMENTED untuk permintaan ini.
Jika sistem file mendukung enumerasi aliran, tetapi file tidak memiliki aliran selain aliran data default, yang tidak disebutkan namanya, sistem file harus mengembalikan struktur FILE_STREAM_INFORMATION tunggal yang berisi "::$DATA" atau string Unicode panjang nol sebagai StreamName.
NTFS mengembalikan "::$DATA" sebagai StreamName untuk aliran data default.
Untuk aliran data bernama, NTFS menambahkan ":$DATA" ke nama aliran. Misalnya, untuk aliran data pengguna dengan nama "Penulis," NTFS mengembalikan ":Authors:$DATA" sebagai StreamName.
Saat memanggil rutinitas seperti ZwCreateFile untuk membuka aliran file bernama, bagian ":$DATA" dari nama dapat dihilangkan. Misalnya, untuk membuka aliran "Penulis" file bernama "Buku," pemanggil dapat menentukan "Book:Authors" atau "Book:Authors:$DATA" sebagai nama stream. Kedua nama tersebut setara.
Ukuran buffer yang diteruskan dalam parameter FileInformation ke FltQueryInformationFile atau ZwQueryInformationFile harus setidaknya ukuranof (FILE_STREAM_INFORMATION). Jika buffer ini tidak cukup besar untuk menahan struktur FILE_STREAM_INFORMATION untuk setiap aliran file, FltQueryInformationFile atau ZwQueryInformationFile mengembalikan STATUS_BUFFER_OVERFLOW atau STATUS_BUFFER_TOO_SMALL. Karena panggilan yang tidak berhasil ke FltQueryInformationFile atau ZwQueryInformationFile tidak mengembalikan ukuran buffer yang diperlukan, driver filter harus melakukan satu atau beberapa panggilan tambahan ke FltQueryInformationFile atau ZwQueryInformationFile, melewati buffer yang lebih besar di setiap panggilan, sampai buffer cukup besar.
Dukungan untuk aliran data bernama adalah file-system-specific. Driver filter sistem file dapat menentukan apakah sistem file mendukung aliran bernama dengan salah satu cara berikut:
Dengan memanggil FltQueryVolumeInformation atau ZwQueryVolumeInformationFile dan menentukan FileFsAttributeInformation untuk parameter FsInformationClass . Saat dikembalikan, buffer FsInformation berisi struktur FILE_FS_ATTRIBUTE_INFORMATION. Jika bit FILE_NAMED_STREAMS diatur dalam anggota FileSystemAttributes dari struktur ini, sistem file mendukung aliran bernama.
Dengan mengirim permintaan IRP_MJ_QUERY_VOLUME_INFORMATION ke sistem file dan menentukan FileFsAttributeInformation untuk parameter FsInformationClass . Saat dikembalikan, Irp-AssociatedIrp.SystemBuffer> berisi struktur FILE_FS_ATTRIBUTE_INFORMATION. Jika bit FILE_NAMED_STREAMS diatur dalam anggota FileSystemAttributes dari struktur ini, sistem file mendukung aliran bernama.
Struktur FILE_STREAM_INFORMATION harus diselaraskan pada batas LONGLONG (8-byte). Jika buffer berisi dua atau lebih struktur ini, nilai NextEntryOffset di setiap entri, kecuali yang terakhir, berada pada batas 8-byte.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | ntifs.h (termasuk Ntifs.h, Fltkernel.h) |