Bagikan melalui


Fungsi FltAcquirePushLockSharedEx (fltkernel.h)

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

Sintaks

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

Parameter

PushLock

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

Flags

Bitmask bendera yang mengontrol atribut kunci.

Nilai kembali

Tidak ada.

Keterangan

Rutinitas FltAcquirePushLockSharedEx 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 penguncian 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 menggantung. 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 penelepon akan diberikan akses bersama ke kunci push yang diberikan tergantung pada hal berikut:

  • Jika kunci push saat ini tidak memiliki izin, akses bersama akan segera diberikan 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 penelepon 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 sampai kunci push dapat diperoleh.

Persyaratan

Persyaratan Nilai
Header fltkernel.h
Pustaka FltMgr.lib

Lihat juga

FltInitializePushLock