Bagikan melalui


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

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInitPerStreamContext

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts

IRP_MJ_CLOSE

IRP_MJ_PNP