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:

Untuk informasi selengkapnya, lihat Mereferensikan Konteks.

Operasi konteks lainnya

Untuk informasi selengkapnya, lihat Mengatur Konteks, dan Merilis Konteks:

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

Lihat juga

FltAllocateContext

FltDeleteContext

FltDeleteVolumeContext

FltGetVolumeContext

FltReleaseContext