IRP_MJ_QUERY_QUOTA (FS dan driver filter)

Ketika Dikirim

Manajer I/O mengirimkan permintaan IRP_MJ_QUERY_QUOTA. Permintaan ini dapat dikirim, misalnya, ketika aplikasi mode pengguna telah memanggil metode Win32 seperti IDiskQuotaControl::GetQuotaState.

Operasi: Driver Sistem File

Jika sistem file mendukung kuota disk, 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.

Operasi: Driver Filter Sistem File Warisan

Driver filter harus meneruskan IRP ini ke driver berikutnya yang lebih rendah pada tumpukan, kecuali jika perlu secara eksplisit mengambil alih perilaku kuota.

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

  • DeviceObject adalah penunjuk ke objek perangkat target.

  • DeviceObject->Bendera: Bendera DO_BUFFERED_IO dan DO_DIRECT_IO digunakan sebagai berikut untuk menentukan metode di mana data diteruskan ke driver:

    Pengaturan Bendera Metode I/O
    ~DO_BUFFERED_IO ~DO_DIRECT_IO
    METHOD_NEITHER ~DO_BUFFERED_IO
    DO_DIRECT_IO METHOD_DIRECT
    DO_BUFFERED_IO ~DO_DIRECT_IO
    METHOD_BUFFERED DO_BUFFERED_IO
    DO_DIRECT_IO METHOD_BUFFERED
  • Irp->AssociatedIrp.SystemBuffer menunjuk ke buffer yang disediakan sistem untuk digunakan sebagai buffer sistem perantara, jika bendera DO_BUFFERED_IO diatur di DeviceObject-Flags>. Jika tidak, anggota ini diatur ke NULL.

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

  • *Irp->UserBuffer menunjuk ke buffer output terstruktur FILE_QUOTA_INFORMATION yang disediakan penelepon yang menerima informasi kuota untuk volume.

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

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

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

  • IrpSp->Parameters.QueryQuota.Length adalah panjang, dalam byte, dari buffer yang diacu oleh Irp-UserBuffer>.

  • IrpSp->Parameters.QueryQuota.SidList adalah penunjuk opsional ke daftar SID yang informasi kuotanya akan dikembalikan. Setiap entri dalam daftar adalah struktur FILE_GET_QUOTA_INFORMATION . Struktur ini didefinisikan sebagai berikut:

    typedef struct _FILE_GET_QUOTA_INFORMATION {
        ULONG NextEntryOffset;
        ULONG SidLength;
        SID Sid;
    } FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION;
    
Anggota Makna
NextEntryOffset Offset byte dari entri FILE_GET_QUOTA_INFORMATION berikutnya, jika beberapa entri ada dalam buffer. Anggota ini nol jika tidak ada entri lain yang mengikuti yang satu ini.
SidLength Panjang, dalam byte, dari anggota Sid .
Sid Pengidentifikasi keamanan (SID)
  • IrpSp->Parameters.QueryQuota.SidListLength adalah panjangnya, dalam byte, dari daftar SID, jika ditentukan.

  • IrpSp->Parameters.QueryQuota.StartSid adalah penunjuk opsional ke SID yang menunjukkan bahwa informasi yang dikembalikan adalah memulai dengan entri selain yang pertama. Parameter ini diabaikan jika daftar SID ditentukan.

Lihat juga

FILE_GET_QUOTA_INFORMATION

FILE_QUOTA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckQuotaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_QUOTA