Fungsi FltSetVolumeContext (fltkernel.h)
FltSetVolumeContext menetapkan konteks untuk volume.
Sintaks
NTSTATUS FLTAPI FltSetVolumeContext(
[in] PFLT_VOLUME Volume,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out, optional] PFLT_CONTEXT *OldContext
);
Parameter
[in] Volume
Penunjuk volume buram untuk volume.
[in] Operation
Bendera yang menentukan detail operasi yang akan dilakukan. Parameter ini harus salah satu dari berikut ini:
Bendera | Makna |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | Jika konteks sudah diatur untuk Volume, FltSetVolumeContext akan menggantinya dengan NewContext>. Jika tidak, ini akan memasukkan NewContext ke dalam daftar konteks untuk volume. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | Jika konteks sudah diatur untuk volume ini, FltSetVolumeContext akan mengembalikan STATUS_FLT_CONTEXT_ALREADY_DEFINED, dan tidak akan mengganti konteks yang ada atau meningkatkan jumlah referensi. Jika konteks belum ditetapkan, rutinitas akan menyisipkan NewContext ke dalam daftar konteks untuk volume dan menaikkan jumlah referensi. |
[in] NewContext
Arahkan ke konteks baru yang akan diatur untuk volume. Parameter ini diperlukan dan tidak boleh NULL.
[out, optional] OldContext
Penunjuk ke variabel yang dialokasikan penelepon yang menerima alamat konteks volume yang ada untuk Volume. Parameter ini bersifat opsional dan dapat berupa NULL. Untuk informasi selengkapnya tentang parameter ini, lihat bagian Keterangan berikut.
Nilai kembali
FltSetVolumeContext mengembalikan STATUS_SUCCESS atau nilai NTSTATUS yang sesuai seperti salah satu hal berikut:
Menampilkan kode | Deskripsi |
---|---|
STATUS_FLT_CONTEXT_ALREADY_DEFINED | JIKA FLT_SET_CONTEXT_KEEP_IF_EXISTS ditentukan untuk Operasi, kode kesalahan ini menunjukkan bahwa konteks sudah dilampirkan ke volume. |
STATUS_FLT_CONTEXT_ALREADY_LINKED | Konteks yang ditujukkan oleh parameter NewContext sudah ditautkan ke objek. Dengan kata lain, kode kesalahan ini menunjukkan bahwa NewContext sudah digunakan karena panggilan sebelumnya yang berhasil dari rutinitas Konteks FltSetXxx. |
STATUS_FLT_DELETING_OBJECT | Volume yang ditentukan sedang dikoyak. Ini adalah kode kesalahan. |
STATUS_INVALID_PARAMETER | Parameter yang tidak valid telah diteruskan. Misalnya, parameter NewContext tidak menunjuk ke konteks volume yang valid, atau nilai yang tidak valid ditentukan untuk Operasi. Ini adalah kode kesalahan. |
Keterangan
Untuk informasi selengkapnya tentang konteks, lihat Tentang konteks minifilter.
Driver minifilter memanggil FltSetVolumeContext untuk melampirkan konteks ke volume, atau untuk menghapus atau mengganti konteks volume yang ada. Driver minifilter hanya dapat melampirkan satu konteks ke volume.
Penghitungan Referensi
Jika FltSetVolumeContext berhasil:
- Jumlah referensi pada NewContext bertahap. Ketika NewContext tidak lagi diperlukan, minifilter harus memanggil FltReleaseContext untuk mengurangi jumlah referensinya.
Jika tidak, jika FltSetVolumeContext gagal:
- Jumlah referensi pada NewContext tetap tidak berubah.
- Jika OldContext bukan NULL dan tidak menunjuk ke NULL_CONTEXT maka OldContext adalah penunjuk yang dirujuk ke konteks yang saat ini terkait dengan volume. Filter yang memanggil FltSetVolumeContext harus memanggil FltReleaseContext untuk OldContext juga ketika penunjuk konteks tidak lagi diperlukan.
Terlepas dari keberhasilannya:
- Filter yang memanggil FltSetVolumeContext harus memanggil FltReleaseContext untuk mengurangi jumlah referensi pada objek NewContext yang bertambah oleh FltAllocateContext.
Untuk informasi selengkapnya, lihat Mereferensikan Konteks.
Operasi konteks lainnya
Untuk informasi selengkapnya, lihat Mengatur Konteks, dan Merilis Konteks:
Untuk mengalokasikan konteks baru, panggil FltAllocateContext.
Untuk mendapatkan konteks volume, panggil FltGetVolumeContext.
Untuk menghapus konteks volume, panggil FltDeleteVolumeContext atau FltDeleteContext.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dan didukung di Microsoft Windows 2000 Update Rollup 1 untuk SP4, Windows XP SP2, Windows Server 2003 SP1, dan sistem operasi yang lebih baru. |
Target Platform | Universal |
Header | fltkernel.h (termasuk Fltkernel.h) |
Pustaka | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |