Bagikan melalui


IRP_MJ_CLEANUP (filter FS dan FS)

Ketika Dikirim

Tanda terima permintaan IRP_MJ_CLEANUP menunjukkan bahwa jumlah referensi handel pada objek file telah mencapai nol. (Dengan kata lain, semua handel ke objek file telah ditutup.) Sering kali dikirim ketika aplikasi mode pengguna telah memanggil fungsi Win32 CloseHandle (atau ketika driver mode kernel telah disebut ZwClose) pada handel terakhir yang luar biasa ke objek file.

Penting untuk dicatat bahwa objek file mungkin masih digunakan ketika semua handel ke objek file telah ditutup. Komponen sistem, seperti Cache Manager dan Memory Manager, mungkin menyimpan referensi yang luar biasa ke objek file. Komponen-komponen ini masih dapat membaca atau menulis dari file, bahkan setelah permintaan IRP_MJ_CLEANUP diterima.

Operasi: Driver Sistem File

Jika objek perangkat target adalah objek perangkat kontrol sistem file, driver sistem file harus menyelesaikan IRP.

Jika tidak, driver sistem file harus memproses permintaan pembersihan.

Operasi: Driver Filter Sistem File Warisan

Jika objek perangkat target adalah objek perangkat kontrol driver filter, driver filter harus menyelesaikan IRP.

Jika tidak, driver filter harus meneruskan IRP ke driver berikutnya yang lebih rendah pada tumpukan setelah melakukan pemrosesan yang diperlukan.

Penulis driver filter sistem file harus mencatat bahwa IoCreateStreamFileObject menyebabkan permintaan IRP_MJ_CLEANUP dikirim ke tumpukan driver sistem file untuk volume. Karena sistem file sering membuat objek file aliran sebagai efek samping dari operasi selain IRP_MJ_CREATE, sulit bagi driver filter untuk mendeteksi pembuatan objek file aliran dengan andal. Dengan demikian, driver filter seharusnya mengharapkan untuk menerima permintaan IRP_MJ_CLEANUP dan IRP_MJ_CLOSE untuk objek file yang sebelumnya tidak terlihat.

Penulis driver filter juga harus mencatat bahwa, tidak seperti IoCreateStreamFileObject, IoCreateStreamFileObjectLite tidak menyebabkan permintaan IRP_MJ_CLEANUP dikirim ke tumpukan driver sistem file. Untuk alasan ini, dan karena sistem file sering membuat objek file aliran sebagai efek samping dari operasi selain IRP_MJ_CREATE, sulit bagi driver filter untuk mendeteksi pembuatan objek file aliran dengan andal. Dengan demikian, driver filter seharusnya mengharapkan untuk menerima permintaan IRP_MJ_CLOSE untuk objek file yang sebelumnya tidak terlihat.

Parameter

Sistem file atau driver filter Warisan memanggil IoGetCurrentIrpStackLocation dengan IRP yang diberikan untuk mendapatkan penunjuk ke lokasi tumpukannya sendiri di IRP, yang diperlihatkan dalam daftar berikut sebagai IrpSp. (IRP ditampilkan sebagai Irp.) Driver dapat menggunakan informasi yang diatur dalam anggota IRP berikut dan lokasi tumpukan IRP dalam memproses permintaan pembersihan.

  • DeviceObject

    Arahkan ke objek perangkat target.

  • Bendera Irp>

    Bendera berikut diatur untuk permintaan ini:

    • IRP_CLOSE_OPERATION
    • IRP_SYNCHRONOUS_API
  • Irp-IoStatus>

    Arahkan ke struktur IO_STATUS_BLOCK yang menerima status penyelesaian akhir dan informasi tentang operasi yang diminta.

  • Irp-FileObject>

    Penunjuk ke objek file yang terkait dengan DeviceObject.

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

  • Irp-MajorFunction>

    Menentukan IRP_MJ_CLEANUP.

Lihat juga

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCreateStreamFileObject

IoCreateStreamFileObjectLite

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_CLEANUP (Referensi Kernel WDK)

IRP_MJ_CLOSE

IRP_MJ_CREATE

ZwClose