Bagikan melalui


IRP_MJ_CLOSE (FS dan driver filter)

Ketika Dikirim

Manajer I/O mengirimkan permintaan IRP_MJ_CLOSE untuk menunjukkan bahwa jumlah referensi pada objek file telah mencapai nol, biasanya karena driver sistem file atau komponen mode kernel lainnya telah disebut ObDereferenceObject pada objek file. Permintaan ini biasanya mengikuti permintaan pembersihan. Namun, meskipun permintaan penutupan mungkin tidak segera diterima setelah permintaan pembersihan.

Operasi: Driver Sistem File

Jika objek perangkat target adalah objek perangkat kontrol sistem file, driver sistem file harus menyelesaikan IRP setelah melakukan pemrosesan yang diperlukan.

Jika tidak, driver sistem file harus memproses permintaan penutupan.

Operasi: Driver Filter Sistem File Warisan

Jika objek perangkat target adalah objek perangkat kontrol driver filter, driver filter harus melakukan apa yang diperlukan untuk mengakhiri komunikasi dengan objek perangkat kontrol dan kemudian menyelesaikan IRP.

Jika tidak, driver filter harus melakukan pemrosesan yang diperlukan dan kemudian meneruskan IRP ke driver berikutnya yang lebih rendah pada tumpukan. Pemrosesan dapat mencakup operasi seperti menghapus informasi konteks objek per file dan per file yang dipertahankan filter.

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 harus 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 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 tutup.

  • 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_CLOSE.

Lihat juga

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCreateStreamFileObject

IoCreateStreamFileObjectLite

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_CLOSE (Referensi Kernel WDK)

IRP_MJ_CLEANUP

IRP_MJ_CREATE

ObDereferenceObject