Fungsi FltInitializePushLock (fltkernel.h)
Rutinitas FltInitializePushLock menginisialisasi variabel kunci pendorongan.
Sintaks
VOID FLTAPI FltInitializePushLock(
[out] PEX_PUSH_LOCK PushLock
);
Parameter
[out] PushLock
Penunjuk ke penyimpanan yang disediakan penelepon, yang harus setidaknya nilai sizeof(EX_PUSH_LOCK), agar variabel kunci pendorongan diinisialisasi. Penyimpanan harus selaras dengan 4 byte pada platform 32-bit, dan 8-byte yang selaras pada platform 64-bit.
Menampilkan nilai
Tidak ada
Keterangan
Penguncian push jarang menjadi pilihan yang baik untuk minifilter sistem file. Seperti yang dijelaskan di bawah ini, beberapa karakteristiknya dapat tidak kompatibel dengan sifat sistem file yang melekat kembali.
Kunci push mirip dengan struktur ERESOURCE (juga disebut "sumber daya") dengan cara berikut:
- Penguncian pendorongan dapat digunakan untuk sinkronisasi oleh sekumpulan utas.
- Kunci push dapat diperoleh untuk akses bersama atau eksklusif.
- Meskipun pemanggil menyediakan penyimpanan untuk variabel kunci push, struktur EX_PUSH_LOCK buram: yaitu, anggotanya dicadangkan untuk penggunaan sistem.
- Algoritma untuk memberikan akses eksklusif tidak adil untuk semua utas. Jika ada ketidakcocokan kunci eksklusif tingkat tinggi, tidak ada jaminan tentang urutan di mana utas akan diberikan akses eksklusif.
- Tidak ada rutinitas dukungan untuk menentukan pemilik kunci push saat ini pada durasi. (Pengguna struktur ERESOURCE dapat memanggil rutinitas seperti ExIsResourceAcquiredExclusiveLite untuk menentukan apakah utas saat ini memiliki akses eksklusif ke sumber daya.)
-
Untuk alasan yang sama, tidak ada ekstensi dukungan untuk menentukan pemilik kunci push saat ini pada waktu debug, dan dengan demikian mendiagnosis kebuntuan. (Pengguna struktur ERESOURCE dapat menggunakan
!locks
ekstensi dalam kd atau windbg untuk mengetahui hal ini.) - Tidak ada dukungan pemverifikasi driver untuk membantu diagnosis awal kebuntuan melalui kunci dorong.
- Kunci push eksklusif tidak dapat diperoleh secara rekursif.
- Ketika penguncian push sebagian besar diperoleh untuk akses bersama, kunci tersebut lebih efisien daripada struktur ERESOURCE.
- Penyimpanan untuk kunci pendorongan dapat dialokasikan dari kumpulan halaman atau tidak berpakaian. Struktur ERESOURCE harus dialokasikan hanya dari kumpulan yang tidak disebarkan.
- EX_PUSH_LOCK struktur jauh lebih kecil dari struktur ERESOURCE.
Untuk memperoleh kunci pendorongan untuk akses eksklusif, panggil FltAcquirePushLockExclusive.
Untuk memperoleh kunci push untuk akses bersama, panggil FltAcquirePushLockShared.
Untuk melepaskan kunci push, panggil FltReleasePushLock.
Untuk menghapus kunci push, panggil FltDeletePushLock.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Rutinitas ini tersedia di Microsoft Windows XP SP2, Microsoft Windows Server 2003 SP1, dan yang lebih baru. |
Target Platform | Universal |
Header | fltkernel.h (termasuk Fltkernel.h) |
Pustaka | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk