Fungsi FltDeleteContext (fltkernel.h)
FltDeleteContext menandai konteks tertentu untuk penghapusan.
Sintaks
VOID FLTAPI FltDeleteContext(
[in] PFLT_CONTEXT Context
);
Parameter
[in] Context
Penunjuk ke konteks yang akan dihapus. Parameter ini diperlukan dan tidak boleh NULL.
Nilai kembali
Tidak ada.
Keterangan
Untuk informasi selengkapnya tentang konteks, lihat Tentang konteks minifilter.
Karena konteks dihitung referensi, biasanya tidak diperlukan driver minifilter untuk memanggil rutinitas, seperti FltDeleteContext, untuk secara eksplisit menghapus konteks.
FltDeleteContext menandai konteks untuk penghapusan. Konteks biasanya dibebaskan segera setelah referensi saat ini dirilis, kecuali ada referensi luar biasa di dalamnya (misalnya, karena konteksnya masih digunakan oleh utas lain).
Anda harus mempertimbangkan item berikut saat menggunakan FltDeleteContext:
Ketika driver minifilter memanggil FltDeleteContext, driver minifilter harus sudah memiliki referensi ke konteks. Namun, ketika driver minifilter memanggil FltDeleteStreamHandleContext, FltDeleteStreamContext, FltDeleteInstanceContext, dan sebagainya, driver minifilter tidak memerlukan referensi ke konteks. Setelah driver minifilter memanggil FltDeleteContext, referensi tersebut ke konteks masih valid. Driver minifilter harus memanggil rutinitas FltReleaseContext untuk merilis referensi ke konteks.
FltDeleteContext menghapus konteks dari struktur manajer filter internal. Kemudian, panggilan lebih lanjut ke fungsi yang mendapatkan konteks, seperti FltGetContexts dan FltGetInstanceContext, tidak dapat menemukan konteks tersebut. Namun, memori konteks tidak dirilis sampai jumlah referensi untuk konteks masuk ke 0.
Konteks juga dapat dihapus dengan memanggil rutinitas konteks penghapusan yang sesuai dari tabel berikut.
Jenis Konteks | Rutinitas Delete-Context |
---|---|
FLT_FILE_CONTEXT | FltDeleteFileContext (Windows Vista dan yang lebih baru saja.) |
FLT_INSTANCE_CONTEXT | FltDeleteInstanceContext |
FLT_SECTION_CONTEXT | FltCloseSectionForDataScan (hanya Windows 8 dan yang lebih baru.) |
FLT_STREAM_CONTEXT | FltDeleteStreamContext |
FLT_STREAMHANDLE_CONTEXT | FltDeleteStreamHandleContext |
FLT_TRANSACTION_CONTEXT | FltDeleteTransactionContext (Windows Vista dan yang lebih baru saja.) |
FLT_VOLUME_CONTEXT | FltDeleteVolumeContext |
Untuk mengalokasikan konteks baru, panggil FltAllocateContext.
Untuk menaikkan jumlah referensi pada konteks, panggil FltReferenceContext.
Untuk mengurangi jumlah referensi pada konteks, panggil FltReleaseContext.
Konteks bagian, FLT_SECTION_CONTEXT jenis, tidak boleh dihapus menggunakan FltDeleteContext. Sebagai gantinya, gunakan FltReleaseContext untuk membatalkan alokasi konteks bagian.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | fltkernel.h (termasuk Fltkernel.h) |
Pustaka | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |