Bagikan melalui


Fungsi IoCreateStreamFileObjectEx (ntifs.h)

Rutinitas IoCreateStreamFileObjectEx membuat objek file aliran baru.

Sintaks

PFILE_OBJECT IoCreateStreamFileObjectEx(
  [in, optional]  PFILE_OBJECT   FileObject,
  [in, optional]  PDEVICE_OBJECT DeviceObject,
  [out, optional] PHANDLE        FileHandle
);

Parameter

[in, optional] FileObject

Arahkan 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.

[out, optional] FileHandle

Penunjuk ke handel file untuk aliran pada output. Parameter ini bersifat opsional dan dapat berupa NULL.

Nilai kembali

IoCreateStreamFileObjectEx mengembalikan penunjuk ke objek file aliran yang baru dibuat.

Keterangan

Sistem file memanggil IoCreateStreamFileObjectEx untuk membuat objek file aliran 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 men-cache struktur pada disk volume seolah-olah itu adalah file biasa. Dalam hal ini, parameter DeviceObject dalam panggilan ke IoCreateStreamFileObjectEx 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 IoCreateStreamFileObjectEx 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 IoCreateStreamFileObjectEx 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 harus mengharapkan untuk menerima permintaan IRP_MJ_CLEANUP dan IRP_MJ_CLOSE untuk objek file yang sebelumnya tidak terlihat.

Jika kegagalan alokasi kumpulan terjadi, IoCreateStreamFileObjectEx menimbulkan pengecualian STATUS_INSUFFICIENT_RESOURCES.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASIF

Lihat juga

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject

IoCreateStreamFileObjectLite

ObDereferenceObject