Fungsi FltAcquirePushLockShared (fltkernel.h)

Rutinitas FltAcquirePushLockShared memperoleh kunci push yang diberikan untuk akses bersama oleh utas panggilan.

Sintaks

VOID FLTAPI FltAcquirePushLockShared(
  [in, out] PEX_PUSH_LOCK PushLock
);

Parameter

[in, out] PushLock

Penunjuk kunci push buram jenis PEX_PUSH_LOCK. Pointer ini harus diinisialisasi oleh panggilan sebelumnya ke FltInitializePushLock.

Nilai kembali

Tidak ada.

Keterangan

Rutinitas FltAcquirePushLockShared memperoleh kunci push yang diberikan untuk akses bersama oleh utas panggilan.

Kunci push mirip dengan struktur ERESOURCE (juga disebut sumber daya) karena dapat diperoleh untuk akses bersama atau eksklusif. Untuk informasi selengkapnya tentang kunci push, lihat entri referensi untuk FltInitializePushLock.

Tidak seperti struktur ERESOURCE, kunci pendorongan tidak dapat diperoleh secara rekursif. Jika penelepon sudah memperoleh kunci pendorongan untuk akses eksklusif, sistem akan macet. Jika penelepon sudah memperoleh kunci push untuk akses bersama, pemanggil dapat menerima akses bersama lagi. Namun, setiap panggilan ke FltAcquirePushLockShared harus dicocokkan dengan panggilan berikutnya ke FltReleasePushLock.

Ketika pemanggil akan diberikan akses bersama ke kunci push yang diberikan tergantung pada hal berikut:

  • Jika kunci push saat ini tidak berwenang, akses bersama diberikan segera ke utas saat ini.

  • Jika kunci push telah diperoleh untuk akses bersama oleh utas lain dan tidak ada utas yang menunggu akses eksklusif ke kunci push, akses bersama diberikan kepada pemanggil segera. Penelepon dimasukkan ke dalam status tunggu jika ada pelayan eksklusif.

  • Jika kunci pendorongan telah diperoleh untuk akses eksklusif oleh utas lain atau jika ada utas lain yang menunggu akses eksklusif, utas saat ini dimasukkan ke dalam status tunggu hingga kunci pendorongan dapat diperoleh.

Karena FltAcquirePushLockShared menonaktifkan pengiriman APC kernel normal, tidak perlu memanggil KeEnterCriticalRegion atau FsRtlEnterFileSystem sebelum memanggil FltAcquirePushLockShared.

Untuk melepaskan kunci push setelah diperoleh, panggil FltReleasePushLock. Setiap panggilan ke FltAcquirePushLockShared harus dicocokkan dengan panggilan berikutnya ke FltReleasePushLock.

Untuk memperoleh kunci pendorongan untuk akses eksklusif, panggil FltAcquirePushLockExclusive.

Untuk menginisialisasi kunci push, panggil FltInitializePushLock.

Untuk menghapus kunci push, panggil FltDeletePushLock.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header fltkernel.h (termasuk Fltkernel.h)
Pustaka FltMgr.lib
IRQL <= APC_LEVEL

Lihat juga

FltAcquirePushLockExclusive

FltAcquirePushLockSharedEx

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion