Bagikan melalui


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

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltFsControlFile

IoBuildAsynchronousFsdRequest

IoBuildSynchronousFsdRequest

IoVerifyVolume

IRP_MJ_FILE_SYSTEM_CONTROL

MmGetSystemAddressForMdlSafe

MmProbeAndLockPages

ProbeForRead

ProbeForWrite

ZwFsControlFile