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

Lihat juga

FltAllocateContext

FltCloseSectionForDataScan

FltDeleteFileContext

FltDeleteInstanceContext

FltDeleteStreamContext

FltDeleteStreamHandleContext

FltDeleteTransactionContext

FltDeleteVolumeContext

FltReferenceContext

FltReleaseContext