Bagikan melalui


IRP_MJ_LOCK_CONTROL (FS dan driver filter)

Ketika Dikirim

Manajer I/O, komponen sistem operasi lainnya, dan driver mode kernel lainnya mengirim permintaan IRP_MJ_LOCK_CONTROL.

Operasi: Driver Sistem File

Driver sistem file harus mengekstrak dan mendekode objek file untuk menentukan apakah objek perangkat target adalah objek perangkat kontrol sistem file. Jika demikian, driver sistem file harus menyelesaikan IRP sebagaimana mestinya tanpa memproses permintaan kunci.

Jika tidak, jika permintaan telah dikeluarkan pada handel yang mewakili file pengguna terbuka, driver sistem file harus melakukan operasi yang ditunjukkan oleh kode fungsi minor dan menyelesaikan IRP. Jika tidak, driver harus gagal dalam IRP.

Berikut ini adalah kode fungsi minor yang valid:

Kode Deskripsi
IRP_MN_LOCK Menunjukkan permintaan kunci rentang byte, mungkin atas nama aplikasi mode pengguna yang telah memanggil fungsi Win32 LockFile .
IRP_MN_UNLOCK_ALL Menunjukkan permintaan untuk melepaskan semua kunci rentang byte untuk file, biasanya karena handel terutang terakhir ke objek file sedang ditutup.
IRP_MN_UNLOCK_ALL_BY_KEY Menunjukkan permintaan untuk melepaskan semua kunci rentang byte dengan nilai kunci tertentu.
IRP_MN_UNLOCK_SINGLE Menunjukkan permintaan untuk merilis kunci rentang byte tunggal, mungkin atas nama aplikasi mode pengguna yang telah disebut fungsi Win32 UnlockFile .

Operasi: Driver Filter Sistem File Warisan

Driver filter sistem file harus meneruskan IRP ke driver berikutnya yang lebih rendah pada tumpukan setelah melakukan pemrosesan yang diperlukan.

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 kontrol kunci:

  • DeviceObject adalah penunjuk ke objek perangkat target.

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

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

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

Bendera Makna
SL_EXCLUSIVE_LOCK Jika bendera ini diatur, kunci rentang byte eksklusif akan diminta. Jika tidak, kunci bersama diminta.
SL_FAIL_IMMEDIATELY Jika bendera ini diatur, permintaan kunci harus gagal jika tidak dapat diberikan segera.
  • IrpSp->MajorFunction diatur ke IRP_MJ_LOCK_CONTROL.

  • IrpSp->MinorFunction diatur ke salah satu nilai berikut:

    • IRP_MN_LOCK
    • IRP_MN_UNLOCK_ALL
    • IRP_MN_UNLOCK_ALL_BY_KEY
    • IRP_MN_UNLOCK_SINGLE
  • IrpSp->Parameters.LockControl.ByteOffset adalah offset byte awal dalam file rentang byte yang akan dikunci atau dibuka kuncinya.

  • IrpSp->Parameters.LockControl.Key adalah kunci untuk kunci rentang byte.

  • IrpSp->Parameters.LockControl.Length adalah panjang, dalam byte, dari rentang byte yang akan dikunci atau dibuka kuncinya.

Lihat juga

FltProcessFileLock

FsRtlProcessFileLock

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP