Fungsi IoCreateStreamFileObject (ntifs.h)
Rutinitas IoCreateStreamFileObject membuat objek file stream baru.
Sintaks
PFILE_OBJECT IoCreateStreamFileObject(
[in, optional] PFILE_OBJECT FileObject,
[in, optional] PDEVICE_OBJECT DeviceObject
);
Parameter
[in, optional] FileObject
Penunjuk ke objek file yang terkait dengan file aliran baru. Parameter ini bersifat opsional dan dapat berupa NULL.
[in, optional] DeviceObject
Penunjuk ke objek perangkat untuk perangkat tempat file aliran akan dibuka. Jika pemanggil menentukan nilai non-NULL untuk FileObject, nilai DeviceObject diabaikan. Jika tidak, pemanggil harus menentukan nilai non-NULL untuk DeviceObject.
Nilai kembali
IoCreateStreamFileObject mengembalikan penunjuk ke objek file aliran yang baru dibuat.
Keterangan
Sistem file memanggil IoCreateStreamFileObject untuk membuat objek file stream baru. Objek file aliran identik dengan objek file biasa, kecuali bahwa bendera objek file FO_STREAM_FILE diatur.
Objek file aliran umumnya digunakan untuk mewakili aliran internal untuk volume yang dipasang oleh sistem file. File volume virtual ini memungkinkan sistem file untuk melihat, mengubah, dan menyimpan struktur pada disk volume seolah-olah itu adalah file biasa. Dalam hal ini, parameter DeviceObject dalam panggilan ke IoCreateStreamFileObject menentukan objek perangkat volume (VDO) untuk volume.
Objek file aliran juga dapat digunakan untuk mewakili aliran data alternatif untuk mengakses metadata file, seperti atribut yang diperluas atau deskriptor keamanan. Dalam hal ini, parameter FileObject dalam panggilan ke IoCreateStreamFileObject menentukan objek file yang ada untuk file tersebut. Objek file aliran yang baru dibuat memungkinkan sistem file untuk melihat, mengubah, dan menyimpan metadata file seolah-olah itu adalah file biasa.
Ketika objek file aliran tidak lagi diperlukan, pemanggil harus mengurangi jumlah referensinya dengan memanggil ObDereferenceObject. Ketika jumlah referensi objek file aliran mencapai nol, permintaan IRP_MJ_CLOSE dikirim ke tumpukan driver sistem file untuk volume.
Penulis driver filter sistem file harus mencatat bahwa IoCreateStreamFileObject menyebabkan permintaan IRP_MJ_CLEANUP dikirim ke tumpukan driver sistem file untuk volume. Karena sistem file sering membuat objek file aliran sebagai efek samping dari operasi selain IRP_MJ_CREATE, sulit bagi driver filter untuk mendeteksi pembuatan objek file aliran dengan andal. Dengan demikian, driver filter seharusnya mengharapkan untuk menerima permintaan IRP_MJ_CLEANUP dan IRP_MJ_CLOSE untuk objek file yang sebelumnya tidak terlihat.
Jika kegagalan alokasi kumpulan terjadi, IoCreateStreamFileObject menimbulkan pengecualian STATUS_INSUFFICIENT_RESOURCES.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ntifs.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |