FLT_PARAMETERS untuk serikat IRP_MJ_FILE_SYSTEM_CONTROL
Komponen union yang digunakan ketika bidang MajorFunction dari struktur FLT_IO_PARAMETER_BLOCK untuk operasi IRP_MJ_FILE_SYSTEM_CONTROL.
Sintaks
typedef union _FLT_PARAMETERS {
... ;
union {
struct {
PVPB Vpb;
PDEVICE_OBJECT DeviceObject;
} VerifyVolume;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT FsControlCode;
} Common;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT FsControlCode;
PVOID InputBuffer;
PVOID OutputBuffer;
PMDL OutputMdlAddress;
} Neither;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT FsControlCode;
PVOID SystemBuffer;
} Buffered;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT FsControlCode;
PVOID InputSystemBuffer;
PVOID OutputBuffer;
PMDL OutputMdlAddress;
} Direct;
} FileSystemControl;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Anggota
FileSystemControl: Struktur yang berisi anggota berikut.
VerifyVolume: Komponen union yang digunakan untuk operasi IRP_MN_VERIFY_VOLUME.
Vpb: Pointer ke blok parameter volume (VPB) agar volume diverifikasi.
DeviceObject: Penunjuk ke objek perangkat agar volume dapat diverifikasi.
Umum: Komponen union yang digunakan untuk semua metode buffering untuk operasi IRP_MN_KERNEL_CALL dan IRP_MN_USER_FS_REQUEST.
Common.OutputBufferLength: Panjang, dalam byte, dari buffer yang dirujuk oleh anggota Neither.OutputBuffer atau Direct.OutputBuffer .
Common.InputBufferLength: Panjang, dalam byte, dari buffer yang dituju oleh anggota Neither.InputBuffer, Buffered.SystemBuffer, atau Direct.InputSystemBuffer .
Common.FsControlCode: Kode fungsi FSCTL yang akan diteruskan ke sistem file, filter sistem file, atau driver minifilter untuk perangkat target.
Untuk informasi terperinci tentang permintaan IOCTL dan FSCTL, lihat Menggunakan Kode Kontrol I/O dalam Panduan Arsitektur Mode Kernel dan "Kode Kontrol Input dan Output Perangkat" dalam dokumentasi Microsoft Windows SDK. (Sumber daya ini mungkin tidak tersedia di beberapa bahasa dan negara.)
Baik: Komponen union yang digunakan untuk operasi IRP_MN_KERNEL_CALL dan IRP_MN_USER_FS_REQUEST saat metode buffering METHOD_NEITHER. Untuk informasi selengkapnya tentang metode buffering, lihat Menentukan Kode Kontrol I/O.
Neither.InputBuffer: Alamat virtual mode pengguna dari buffer input yang disediakan pemohon asli operasi. Manajer I/O dan Manajer Filter tidak memvalidasi alamat ini. Untuk memastikan bahwa alamat ruang pengguna valid, minifilter harus menggunakan rutinitas seperti ProbeForRead, ProbeForWrite, dan MmProbeAndLockPages, yang menyertakan semua referensi buffer dalam blok coba/kecuali . Untuk informasi selengkapnya, lihat Menggunakan I/O Buffered maupun Direct I/O dan Kesalahan dalam Mereferensikan Alamat User-Space.
Tidak Ada.OutputBuffer: Alamat virtual mode pengguna dari buffer output yang disediakan pemohon asli operasi. Manajer I/O dan Manajer Filter tidak memvalidasi alamat ini. Untuk memastikan bahwa alamat ruang pengguna valid, minifilter harus menggunakan rutinitas seperti ProbeForRead, ProbeForWrite, dan MmProbeAndLockPages, yang menyertakan semua referensi buffer dalam blok coba/kecuali . Untuk informasi selengkapnya, lihat Menggunakan I/O Buffered maupun Direct I/O dan Kesalahan dalam Mereferensikan Alamat User-Space. Tidak Ada.OutputBuffer bersifat opsional dan dapat berupa NULL jika MDL disediakan di Neither.OutputMdlAddress. Lihat Keterangan.
Neither.OutputMdlAddress: Alamat daftar deskriptor memori (MDL) yang menjelaskan buffer yang ditunjuk oleh anggota Neither.OutputBuffer . Anggota ini bersifat opsional dan dapat berupa NULL jika buffer disediakan di Neither.OutputBuffer.
Buffered: Komponen union yang digunakan untuk operasi IRP_MN_KERNEL_CALL dan IRP_MN_USER_FS_REQUEST saat metode buffering METHOD_BUFFERED. Untuk informasi selengkapnya tentang metode buffering, lihat Menentukan Kode Kontrol I/O.
Buffered.SystemBuffer: Alamat buffer yang dialokasikan sistem untuk operasi. Dalam I/O METHOD_BUFFERED, buffer ini digunakan untuk input dan output. Untuk informasi selengkapnya, lihat Metode untuk Mengakses Buffer Data.
Langsung: Komponen union yang digunakan untuk operasi IRP_MN_KERNEL_CALL dan IRP_MN_USER_FS_REQUEST saat metode buffering METHOD_IN_DIRECT atau METHOD_OUT_DIRECT. Untuk informasi selengkapnya tentang metode buffering, lihat Menentukan Kode Kontrol I/O di Panduan Arsitektur Mode Kernel.
Direct.InputSystemBuffer: Alamat buffer input untuk operasi. Buffer ini dikunci oleh sistem operasi sehingga aman untuk diakses dari mode kernel. Untuk informasi selengkapnya, lihat Metode untuk Mengakses Buffer Data.
Direct.OutputBuffer: Alamat virtual mode pengguna dari buffer output yang disediakan pemohon asli operasi. Dalam I/O langsung, tidak seperti I/O METHOD_NEITHER, sistem operasi mengunci buffer ini sehingga aman untuk mengakses dari mode kernel, selama minifilter berada dalam konteks proses yang sama dengan pemohon asli operasi I/O. (Jika tidak, harus memanggil MmGetSystemAddressForMdlSafe untuk mendapatkan alamat sistem dari MDL yang dituju anggota OutputMdlAddress .) Untuk informasi selengkapnya, lihat Menggunakan I/O Langsung dan Kesalahan di I/O Langsung.
Direct.OutputMdlAddress: Alamat daftar deskriptor memori (MDL) yang menjelaskan buffer yang ditunjuk oleh anggota Direct.OutputBuffer . Anggota ini diperlukan dan tidak boleh NULL.
Keterangan
Struktur FLT_PARAMETERS untuk operasi IRP_MJ_FILE_SYSTEM_CONTROL berisi parameter untuk operasi file-system-control-information yang diwakili oleh struktur data panggilan balik (FLT_CALLBACK_DATA). Ini terkandung dalam struktur FLT_IO_PARAMETER_BLOCK .
Jika buffer Neither.OutputBuffer dan Neither.MdlAddress disediakan, disarankan agar minifilter menggunakan MDL.
Jika minifilter mengubah nilai Neither.MdlAddress, maka setelah panggilan balik operasi pasca operasinya, Filter Manager akan membebaskan MDL yang saat ini disimpan di Neither.MdlAddress dan memulihkan nilai sebelumnya dari Neither.MdlAddress.
IRP_MJ_FILE_SYSTEM_CONTROL adalah operasi berbasis IRP.
Persyaratan
Jenis persyaratan | Persyaratan |
---|---|
Header | Fltkernel.h (termasuk Fltkernel.h) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk