Bagikan melalui


Memeriksa Status Oplock dari operasi IRP_MJ_SET_INFORMATION

Operasi IRP_MJ_SET_INFORMATION berikut memeriksa status oplock:

  • FileEndOfFileInformation
  • FileAllocationInformation
  • FileValidDataLengthInformation
  • FileRenameInformation
  • FileShortNameInformation
  • FileLinkInformation
  • FileDispositionInformation

Memeriksa status oplock untuk operasi FileEndOfFileInformation, FileAllocationInformation, dan FileValidDataLengthInformation

Informasi ini berlaku ketika operasi berikut sedang dilakukan pada file atau aliran:

  • Pemanggil mencoba mengubah ukuran logis aliran. Perhatikan bahwa ketika utas penulis malas manajer cache mencoba mengatur akhir file baru, tidak ada pemeriksaan oplock yang dilakukan. Ini karena pemeriksaan dilakukan sebelumnya ketika permintaan tulis nyata diterima.

  • Penelepon mencoba mengubah ukuran aliran yang dialokasikan.

Kondisi untuk jenis permintaan Tingkat 2

  • Selalu putuskan ke Tidak Ada.

  • Tidak diperlukan pengakuan; operasi segera dilanjutkan.

Ketentuan untuk semua jenis permintaan lainnya

  • Hentikan IRP_MJ_SET_INFORMATION (untuk FileEndOfFileInformation, FileAllocationInformation, dan FileValidDataLengthInformation) ketika operasi terjadi pada FILE_OBJECT dengan kunci oplock yang berbeda dari kunci FILE_OBJECT yang memiliki oplock. Jika oplock rusak, pecahkan ke Tidak Ada.

  • Persyaratan pengakuan bervariasi sebagai berikut:

    • Permintaan baca: Tidak diperlukan pengakuan; operasi segera dilanjutkan.

    • Read-Handle permintaan: Meskipun pengakuan jeda diperlukan, operasi segera berlanjut (yaitu, tanpa menunggu pengakuan).

    • Permintaan Tingkat 1, Batch, Filter, Baca-Tulis, dan Read-Write-Handle: Pengakuan harus diterima sebelum operasi dilanjutkan.

Memeriksa status oplock untuk operasi FileRenameInformation, FileShortNameInformation, dan FileLinkInformation

Informasi ini berlaku ketika operasi berikut sedang dilakukan pada file atau aliran:

  • File atau aliran sedang diganti namanya.

  • Nama pendek sedang diatur untuk file.

  • Tautan keras sedang dibuat untuk file. Ini mempengaruhi status oplock jika hard link baru menggantikan tautan yang ada ke file yang berbeda, dan oplock ada pada tautan yang digantikan.

  • Direktori leluhur aliran tempat oplock ada diganti namanya, atau nama pendek direktori leluhur sedang diatur.

Kondisi untuk operasi Tingkat 1, Tingkat 2, Baca, dan Read-Write

  • Oplock tidak rusak.

  • Tidak diperlukan pengakuan, dan operasi segera dilanjutkan.

Kondisi untuk operasi Batch, Filter, Read-Handle, dan Read-Write-Handle

  • Putuskan IRP_MJ_SET_INFORMATION (untuk FileRenameInformation, FileShortNameInformation, dan FileLinkInformation) ketika operasi terjadi pada FILE_OBJECT dengan kunci oplock yang berbeda dari kunci FILE_OBJECT yang memiliki oplock. Jika oplock rusak:

    • Permintaan Batch dan Filter diputuskan menjadi Tidak Ada.

    • Read-Handle permintaan terputus menjadi Baca.

    • Permintaan Read-Write-Handle terputus menjadi Baca-Tulis.

  • Pengakuan harus diterima sebelum operasi berlanjut.

Memeriksa status oplock untuk operasi FileDispositionInformation

Informasi ini berlaku ketika penelepon mencoba menghapus file.

  • Break on IRP_MJ_SET_INFORMATION (untuk FileDispositionInformation) ketika operasi terjadi pada FILE_OBJECT dengan kunci oplock yang berbeda dari kunci FILE_OBJECT yang memiliki oplock, AND saat FILE_DISPOSITION_INFORMATION. DeleteFile adalah TRUE**. Jika oplock rusak:

    • Read-Handle permintaan terputus menjadi Baca.

    • Permintaan Read-Write-Handle terputus menjadi Baca-Tulis.

  • Pengakuan harus diterima sebelum operasi berlanjut.