IRP_MJ_SET_INFORMATION (FS dan driver filter)

Ketika Dikirim

Manajer I/O, komponen sistem operasi lainnya, dan driver mode kernel lainnya mengirim permintaan IRP_MJ_SET_INFORMATION. Ini dapat dikirim, misalnya, ketika aplikasi mode pengguna telah memanggil fungsi Win32 seperti SetEndOfFile atau ketika komponen mode kernel telah disebut ZwSetInformationFile.

Operasi: Driver Sistem File

Driver sistem file harus mengekstrak dan mendekode objek file untuk menentukan apakah itu mewakili file pengguna atau direktori yang terbuka. Jika ya, driver sistem file harus memproses permintaan sebagaimana mestinya dan menyelesaikan IRP.

Jenis informasi berikut dapat diatur pada file dan direktori:

  • FileBasicInformation
  • FileDispositionInformation
  • FileLinkInformation (untuk sistem file yang memungkinkan siklus dibuat dalam hierarki direktori)
  • FilePositionInformation
  • FileRenameInformation

Jenis informasi berikut ini hanya dapat diatur pada file:

  • FileAllocationInformation
  • FileEndOfFileInformation
  • FileLinkInformation: untuk sistem file (misalnya, NTFS) yang tidak memungkinkan siklus dibuat dalam hierarki direktori
  • FileValidDataLengthInformation

Operasi: Driver Filter Sistem File Warisan

Driver filter harus meneruskan IRP ini ke driver berikutnya yang lebih rendah pada tumpukan.

Parameter

Sistem file atau driver filter memanggil IoGetCurrentIrpStackLocation untuk IRP yang diberikan untuk mendapatkan penunjuk ke lokasi tumpukannya sendiri di IRP. Dalam parameter berikut, Irp menunjuk ke IRP dan IrpSp menunjuk ke IO_STACK_LOCATION. Driver dapat menggunakan informasi yang diatur dalam anggota IRP berikut dan lokasi tumpukan IRP untuk memproses permintaan informasi file yang ditetapkan:

  • DeviceObject adalah penunjuk ke objek perangkat target.

  • Irp->AssociatedIrp.SystemBuffer menunjuk ke buffer input yang berisi informasi file atau direktori yang akan diatur. Informasi ini disimpan dalam salah satu struktur berikut:

  • Irp->IoStatus menunjuk ke struktur IO_STATUS_BLOCK yang menerima status penyelesaian akhir dan informasi tentang operasi yang diminta. Untuk informasi selengkapnya, lihat deskripsi parameter IoStatusBlock ke ZwSetInformationFile.

  • IrpSp->FileObject menunjuk ke objek file yang terkait dengan DeviceObject. Parameter ini berisi penunjuk ke bidang RelatedFileObject , yang juga merupakan struktur FILE_OBJECT. Bidang RelatedFileObject dari struktur FILE_OBJECT tidak valid selama pemrosesan IRP_MJ_SET_INFORMATION dan tidak boleh digunakan.

  • IrpSp->MajorFunction* diatur ke IRP_MJ_SET_INFORMATION.

  • IrpSp->MinorFunction* dapat IRP_MN_KERNEL_CALL ketika Irp-Parameters.SetFile.FileInformationClass> adalah FileValidDataLengthInformation. Kode ini menunjukkan bahwa sumber permintaan adalah komponen kernel tepercaya, memungkinkan driver untuk melewati pemeriksaan keamanan.

  • IrpSp->Parameters.SetFile.AdvanceOnly adalah bendera untuk operasi akhir file. Bendera ini menentukan penggunaan anggota EndOfFileFILE_END_OF_FILE_INFORMATION struktur ketika FileInformationClass adalah FileEndOfFileInformation. Jika TRUE, panjang data baru yang valid untuk file diatur dari EndOfFile hanya jika meningkatkan panjang data yang valid saat ini. Jika FALSE, ukuran file baru diatur dari EndOfFile.

  • IrpSp->Parameters.SetFile.ClusterCount disediakan untuk penggunaan sistem.

  • IrpSp->Parameters.SetFile.DeleteHandle disediakan untuk penggunaan sistem.

  • IrpSp->Parameters.SetFile.FileInformationClass menunjukkan jenis informasi yang akan diatur untuk file, dan dapat menjadi salah satu nilai berikut.

    Nilai Makna
    FileAllocationInformation Atur FILE_ALLOCATION_INFORMATION untuk file.
    FileBasicInformation Atur FILE_BASIC_INFORMATION untuk file.
    FileDispositionInformation Atur FILE_DISPOSITION_INFORMATION untuk file.
    FileEndOfFileInformation Atur FILE_END_OF_FILE_INFORMATION untuk file.
    FileLinkInformation Atur FILE_LINK_INFORMATION untuk file.
    FilePositionInformation Atur FILE_POSITION_INFORMATION untuk file.
    FileRenameInformation Atur FILE_RENAME_INFORMATION untuk file.
    FileValidDataLengthInformation Atur FILE_VALID_DATA_LENGTH_INFORMATION untuk file. Untuk informasi selengkapnya, lihat Irp-MinorFunction>.
  • IrpSp->Parameters.SetFile.FileObject adalah untuk operasi penggantian nama atau tautan. Jika Irp-AssociatedIrp.SystemBuffer-FileName>> berisi nama file yang sepenuhnya memenuhi syarat, atau jika Irp-AssociatedIrp.SystemBuffer-RootDirectory>> non-NULL, anggota ini adalah penunjuk objek file untuk direktori induk file yang merupakan target operasi. Jika tidak, null.

  • IrpSp->Parameters.SetFile.Length adalah panjang, dalam byte, dari buffer yang diacu oleh Irp-AssociatedIrp.SystemBuffer>.

  • IrpSp->Parameters.SetFile.ReplaceIfExists diatur ke TRUE untuk menentukan bahwa jika file dengan nama yang sama sudah ada, file harus diganti dengan file yang diberikan. Atur ke FALSE jika operasi ganti nama harus gagal jika file dengan nama yang diberikan sudah ada.

Keterangan

Anggota AdvanceOnly diatur ke TRUE oleh manajer cache untuk memberi tahu sistem file untuk memajukan panjang data yang valid saat ini pada disk ke panjang data baru yang valid di EndOfFile. Jika AdvanceOnlyFALSE, ukuran file baru, di anggota EndOfFile , sedang diatur yang bisa lebih besar atau lebih kecil dari ukuran file saat ini.

Lihat juga

FILE_ALLOCATION_INFORMATION

FILE_BASIC_INFORMATION

FILE_DISPOSITION_INFORMATION

FILE_END_OF_FILE_INFORMATION

FILE_LINK_INFORMATION

FILE_POSITION_INFORMATION

FILE_RENAME_INFORMATION

FILE_VALID_DATA_LENGTH_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_INFORMATION

ZwSetInformationFile