Fungsi FsRtlRemovePerStreamContext (ntifs.h)
FsRtlRemovePerStreamContext menghapus struktur konteks per aliran dari daftar konteks per aliran yang terkait dengan aliran file.
Sintaks
PFSRTL_PER_STREAM_CONTEXT FsRtlRemovePerStreamContext(
[in] PFSRTL_ADVANCED_FCB_HEADER StreamContext,
[in, optional] PVOID OwnerId,
[in, optional] PVOID InstanceId
);
Parameter
[in] StreamContext
Arahkan ke struktur FSRTL_ADVANCED_FCB_HEADER untuk aliran file. Untuk mendapatkan penunjuk ini dari objek file, gunakan makro FsRtlGetPerStreamContextPointer .
[in, optional] OwnerId
Digunakan untuk mengidentifikasi informasi konteks sebagai milik driver filter tertentu.
[in, optional] InstanceId
Digunakan untuk mencari instans tertentu dari konteks per aliran. Jika tidak disediakan, salah satu konteks yang dimiliki oleh driver filter akan dihapus dan dikembalikan.
Jika OwnerId atau InstanceId tidak disediakan, konteks per aliran terkait tidak akan dihapus dan dikembalikan.
Mengembalikan nilai
FsRtlRemovePerStreamContext mengembalikan penunjuk ke konteks per aliran yang dihapus. Jika tidak ada kecocokan yang ditemukan, atau jika sistem file tidak mendukung konteks filter, FsRtlRemovePerStreamContext mengembalikan NULL.
Keterangan
Driver filter sistem file memanggil FsRtlRemovePerStreamContext untuk menghapus struktur konteks per alirannya sendiri dari daftar konteks per aliran yang terkait dengan aliran file.
FsRtlRemovePerStreamContext hanya menghapus struktur konteks per aliran pencocokan pertama yang ditemukan. Jika ada konteks tambahan yang cocok per aliran, driver filter harus memanggil FsRtlRemovePerStreamContext sebanyak yang diperlukan untuk menghapus semuanya.
Rutinitas ini hanya boleh digunakan ketika driver filter perlu membuang informasi konteks yang terkait dengan aliran file saat aliran masih terbuka. Misalnya, driver filter mungkin memanggil FsRtlRemovePerStreamContext dalam kasus berikut:
Ketika menerima permintaan dari aplikasi mode pengguna untuk berhenti mencatat permintaan I/O pada volume tertentu.
Ketika mendeteksi bahwa file atau direktori telah diganti namanya.
Ketika aliran file ditutup, sistem file bertanggung jawab untuk memastikan bahwa semua konteks per aliran yang terkait dengan aliran tersebut dihapus dan dibebaskan. Untuk melakukan ini, sistem file harus memanggil FsRtlTeardownPerStreamContexts pada blok kontrol file (FCB) atau objek konteks aliran lainnya untuk aliran file. FsRtlTeardownPerStreamContexts memandu daftar FilterContexts, menghapus setiap entri dan memanggil rutinitas FreeCallback-nya .
Dengan demikian, driver filter sistem file tidak boleh memanggil FsRtlRemovePerStreamContext dari dalam rutinitas pengiriman IRP_MJ_CLOSE atau IRP_MJ_PNP. Panggilan seperti itu tidak hanya tidak perlu, tetapi mungkin juga mengganggu panggilan sistem file ke FsRtlTeardownPerStreamContexts.
Driver filter sistem file tidak boleh memanggil FsRtlRemovePerStreamContext dari dalam rutinitas FreeCallback struktur konteks per aliran. Ini karena sistem file yang mendasarinya memanggil rutinitas FreeCallback setelah menghapus struktur konteks dari daftar FilterContexts.
Untuk menginisialisasi struktur konteks per aliran, gunakan makro FsRtlInitPerStreamContext .
Untuk mengaitkan struktur konteks per aliran yang diinisialisasi dengan aliran file, panggil FsRtlInsertPerStreamContext.
Untuk mengambil struktur konteks per aliran yang terkait dengan aliran file, panggil FsRtlLookupPerStreamContext.
FsRtlRemovePerStreamContext hanya dapat digunakan pada sistem file yang mendukung konteks filter.
Untuk informasi selengkapnya, lihat Melacak konteks Per-Stream dalam Driver Filter Sistem File Warisan.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Rollup Pembaruan Windows 2000 SP4; Windows XP |
Target Platform | Universal |
Header | ntifs.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Lihat juga
FsRtlGetPerStreamContextPointer
FsRtlSupportsPerStreamContexts