IRP_MJ_QUERY_INFORMATION (FS dan driver filter)

Ketika Dikirim

Manajer I/O, komponen sistem operasi lainnya, dan driver mode kernel lainnya mengirim permintaan IRP_MJ_QUERY_INFORMATION. Permintaan ini dapat dikirim, misalnya, ketika aplikasi mode pengguna telah memanggil fungsi Win32 seperti GetFileInformationByHandle atau ketika komponen mode kernel telah disebut ZwQueryInformationFile.

Operasi: Driver Sistem File

Driver sistem file harus mengekstrak dan mendekode objek file untuk menentukan apakah ia mewakili pengguna yang membuka file atau direktori. Jika ya, driver harus memproses kueri dan menyelesaikan IRP. Jika tidak, driver harus menyelesaikan IRP sebagaimana mestinya tanpa memproses kueri.

Jenis informasi file dan direktori yang dapat dikueri bergantung pada sistem file, tetapi umumnya menyertakan nilai berikut:

  • FileAllInformation
  • FileAlternateNameInformation
  • FileAttributeTagInformation
  • FileBasicInformation
  • FileCompressionInformation
  • FileEaInformation
  • FileInternalInformation
  • FileNameInformation
  • FileNetworkOpenInformation
  • FilePositionInformation
  • FileStandardInformation
  • FileStreamInformation
  • FileHardLinkInformation

Meskipun jenis informasi FileAccessInformation, FileAlignmentInformation, dan FileModeInformation juga dapat diteruskan sebagai parameter ke ZwQueryInformationFile, informasi ini tidak bergantung pada sistem file. Dengan demikian ZwQueryInformationFile menyediakan informasi ini secara langsung, tanpa mengirim permintaan IRP_MJ_QUERY_INFORMATION ke sistem file.

Untuk daftar semua jenis informasi yang mungkin, lihat enumerasi FILE_INFORMATION_CLASS di ntifs.h.

Operasi: Driver Pengalihan Jaringan

Driver pengalih jaringan yang tidak didasarkan pada RDBSS yang menerima permintaan IRP_MJ_QUERY_INFORMATION untuk FileAllInformation atau FileNameInformation harus merespons dengan jalur "\server\share\file" lengkap untuk nama file dengan satu garis miring terbalik di depan nama server. Format untuk informasi nama ini harus dikembalikan untuk file yang diakses sebagai nama Universal Naming Convention (UNC) (\\server\share\folder\filename.txt, misalnya) atau file yang terletak di drive yang dipetakan (x:\folder\filename.txt, misalnya).

Untuk driver pengalihan mini jaringan (driver yang terhubung secara dinamis dengan rdbss.sys atau yang menautkan secara statis dengan rdbsslib.lib), RDBSS menangani permintaan IRP_MJ_QUERY_INFORMATION untuk FileNameInformation dan mengembalikan informasi nama yang benar. Untuk driver pengalihan mini jaringan, RDBSS menangani permintaan IRP_MJ_QUERY_INFORMATION untuk FileAllInformation untuk bagian informasi nama permintaan. Bagian lain dari permintaan FileAllInformation dikirim sebagai permintaan terpisah ke driver mini-redirector jaringan untuk diselesaikan.

Pengalih jaringan yang menerima permintaan IRP_MJ_QUERY_INFORMATION untuk FileAlternateNameInformation harus merespons dengan nama pendek (8,3 karakter) untuk file tanpa informasi jalur apa pun, jika ada nama pendek untuk file tersebut.

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 kueri:

  • DeviceObject adalah penunjuk ke objek perangkat target.

  • Irp->AssociatedIrp.SystemBuffer menunjuk ke buffer output tempat informasi file atau direktori akan dikembalikan. Informasi ini disimpan dalam salah satu struktur berikut:

  • FILE_ALL_INFORMATION

  • FILE_ATTRIBUTE_TAG_INFORMATION

  • FILE_BASIC_INFORMATION

  • FILE_COMPRESSION_INFORMATION

  • FILE_EA_INFORMATION

  • FILE_INTERNAL_INFORMATION

  • FILE_NAME_INFORMATION

  • FILE_NETWORK_OPEN_INFORMATION

  • FILE_POSITION_INFORMATION

  • FILE_STANDARD_INFORMATION

  • FILE_STREAM_INFORMATION

  • FILE_LINKS_INFORMATION

  • 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 di ZwQueryInformationFile. Rutin.

  • Irp->UserBuffer adalah penunjuk opsional ke buffer output yang disediakan penelepon tempat konten Irp-AssociatedIrp.SystemBuffer> disalin selama penyelesaian I/O oleh manajer I/O. Driver tidak menggunakan buffer ini untuk mengembalikan data apa pun untuk permintaan tersebut.

  • IrpSp->FileObject menunjuk ke objek file yang terkait dengan DeviceObject.

    Parameter IrpSp-FileObject> berisi penunjuk ke bidang RelatedFileObject, yang juga merupakan struktur FILE_OBJECT. Bidang RelatedFileObject dari struktur FILE_OBJECT tidak valid selama pemrosesan IRP_MJ_QUERY_INFORMATION dan tidak boleh digunakan.

  • IrpSp->MajorFunction diatur ke IRP_MJ_QUERY_INFORMATION.

  • IrpSp->Parameters.QueryFile.FileInformationClass adalah jenis informasi file yang akan dikueri. Anggota ini bisa menjadi salah satu nilai berikut.

    Nilai Makna
    FileAllInformation Mengembalikan struktur FILE_ALL_INFORMATION untuk file.
    FileAttributeTagInformation Mengembalikan struktur FILE_ATTRIBUTE_TAG_INFORMATION untuk file.
    FileBasicInformation Mengembalikan struktur FILE_BASIC_INFORMATION untuk file.
    FileCompressionInformation Mengembalikan struktur FILE_COMPRESSION_INFORMATION untuk file.
    FileEaInformation Mengembalikan struktur FILE_EA_INFORMATION untuk file.
    FileInternalInformation Mengembalikan struktur FILE_INTERNAL_INFORMATION untuk file.
    FileNameInformation Mengembalikan struktur FILE_NAME_INFORMATION untuk file.
    FileNetworkOpenInformation Mengembalikan struktur FILE_NETWORK_OPEN_INFORMATION tunggal untuk file.
    FilePositionInformation Mengembalikan struktur FILE_POSITION_INFORMATION tunggal untuk file.
    FileStandardInformation Mengembalikan struktur FILE_STANDARD_INFORMATION tunggal untuk file.
    FileStreamInformation Mengembalikan struktur FILE_STREAM_INFORMATION tunggal untuk file.
    FileHardLinkInformation Mengembalikan struktur FILE_LINKS_INFORMATION untuk file.
  • IrpSp->Parameters.QueryFile.Length adalah panjang, dalam byte, dari buffer yang diacu oleh Irp-AssociatedIrp.SystemBuffer>.

Keterangan

Manajer I/O selalu menyangga operasi IRP_MJ_QUERY_INFORMATION. Manajer I/O mengalokasikan dari memori kumpulan non-halaman Irp-AssociatedIrp.SystemBuffer> yang digunakan untuk mengembalikan informasi file atau direktori yang diminta. Akibatnya, Irp-AssociatedIrp.SystemBuffer> yang dikembalikan oleh sistem operasi selalu merupakan alamat yang valid untuk panjang yang ditentukan dalam IrpSp-Parameters.QueryFile.Length>.

Irp-AssociatedIrp.UserBuffer> digunakan secara internal oleh manajer I/O dan tidak boleh digunakan oleh sistem file atau driver filter sistem file.

Lihat juga

FILE_ALIGNMENT_INFORMATION

FILE_ATTRIBUTE_TAG_INFORMATION

FILE_BASIC_INFORMATION

FILE_INTERNAL_INFORMATION

FILE_NAME_INFORMATION

FILE_NETWORK_OPEN_INFORMATION

FILE_POSITION_INFORMATION

FILE_STANDARD_INFORMATION

FILE_STREAM_INFORMATION

FILE_LINKS_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckEaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile