IRP_MJ_QUERY_EA (FS dan driver filter)

Ketika Dikirim

Manajer I/O, komponen sistem operasi lainnya, dan driver mode kernel lainnya mengirim permintaan IRP_MJ_QUERY_EA ketika aplikasi mode pengguna telah meminta informasi tentang atribut file yang diperluas.

Operasi: Driver Sistem File

Jika sistem file mendukung atribut yang diperluas, driver sistem file harus memproses kueri dan menyelesaikan IRP. Jika tidak, itu harus mengembalikan STATUS_EAS_NOT_SUPPORTED.

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

  • DeviceObject adalah penunjuk ke objek perangkat target.

  • Irp->AssociatedIrp.SystemBuffer menunjuk ke buffer output yang disediakan sistem untuk digunakan sebagai buffer sistem perantara. Digunakan untuk I/O METHOD_BUFFERED.

  • Irp->IoStatus menunjuk ke struktur IO_STATUS_BLOCK yang menerima status penyelesaian akhir dan informasi tentang operasi yang diminta.

  • Irp->MdlAddress adalah alamat daftar deskriptor memori (MDL) yang menjelaskan buffer output yang menerima informasi atribut yang diperluas. Digunakan untuk I/O METHOD_DIRECT.

  • Irp->UserBuffer menunjuk ke buffer output terstruktur FILE_FULL_EA_INFORMATION yang disediakan penelepon yang menerima informasi atribut yang diperluas. Digunakan untuk I/O METHOD_NEITHER.

  • 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_EA dan tidak boleh digunakan.

  • IrpSp->Bendera dapat berupa satu atau beberapa nilai berikut.

Bendera Makna
SL_INDEX_SPECIFIED Mulai pemindaian pada entri dalam daftar atribut yang diperluas yang indeksnya diberikan oleh IrpSp-Parameters.QueryEa.EaIndex>.
SL_RESTART_SCAN Mulai pemindaian pada entri pertama dalam daftar. Jika bendera ini tidak diatur, lanjutkan pemindaian dari permintaan IRP_MJ_QUERY_EA sebelumnya.
SL_RETURN_SINGLE_ENTRY Kembalikan hanya entri pertama yang ditemukan.
  • IrpSp->MajorFunction diatur ke IRP_MJ_QUERY_EA.

  • IrpSp->Parameters.QueryEa.EaIndex adalah indeks entri untuk mulai memindai daftar atribut yang diperluas. Parameter ini diabaikan jika bendera SL_INDEX_SPECIFIED tidak diatur atau jika IrpSp-Parameters.QueryEa.EaList> menunjuk ke daftar yang tidak ada.

  • IrpSp->Parameters.QueryEa.EaList menunjuk ke buffer input terstruktur FILE_GET_EA_INFORMATION yang disediakan penelepon yang menentukan atribut yang diperluas yang akan dikueri.

  • IrpSp->Parameters.QueryEa.EaListLength adalah panjang byte buffer yang diacu oleh IrpSp-Parameters.QueryEa.EaList>.

  • IrpSp->Parameters.QueryEa.Length adalah panjang dalam byte buffer output.

Keterangan

Ketika buffer pendek disediakan dan STATUS_BUFFER_OVERFLOW dikembalikan, NTFS mengembalikan seluruh entri FILE_FULL_EA_INFORMATION terakhir yang pas. Ketika buffer pendek disediakan dan STATUS_BUFFER_TOO_SMALL dikembalikan, NTFS tidak dapat memuat entri FILE_FULL_EA_INFORMATION apa pun.

Pada Windows Vista dan yang lebih baru, FAT16 tidak lagi mendukung atribut yang diperluas.

Lihat juga

FILE_FULL_EA_INFORMATION

FILE_GET_EA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckEaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_EA