Fungsi FltAcquireResourceExclusive (fltkernel.h)
Rutinitas FltAcquireResourceExclusive memperoleh sumber daya yang diberikan untuk akses eksklusif oleh utas panggilan.
Sintaks
VOID FLTAPI FltAcquireResourceExclusive(
[in/out] PERESOURCE Resource
);
Parameter
[in/out] Resource
Penunjuk ke struktur ERESOURCE buram. Struktur ini harus dialokasikan oleh pemanggil dari kumpulan yang tidak disebarkan dan diinisialisasi dengan memanggil ExInitializeResourceLite atau ExReinitializeResourceLite.
Nilai kembali
Tidak ada
Keterangan
FltAcquireResourceExclusive memperoleh sumber daya yang diberikan untuk akses eksklusif oleh utas panggilan.
Keadaan berikut menentukan apakah atau kapan penelepon diberikan akses eksklusif ke sumber daya yang diberikan:
Jika sumber daya saat ini tidak dimiliki, akses eksklusif diberikan segera ke utas saat ini.
Jika penelepon sudah memperoleh sumber daya untuk akses eksklusif, utas saat ini diberikan jenis akses yang sama secara rekursif.
Penelepon yang telah berbagi akses ke sumber daya harus melepaskan kunci dan kemudian memperolehnya kembali secara eksklusif.
Jika sumber daya saat ini dimiliki sebagai eksklusif oleh utas lain, atau jika pemanggil hanya memiliki akses bersama ke sumber daya, utas saat ini dimasukkan ke dalam status tunggu hingga sumber daya dapat diperoleh.
Jika dua utas masing-masing memegang kunci bersama pada sumber daya yang sama dan keduanya mencoba untuk memperoleh kunci secara eksklusif tanpa melepaskan kunci bersama mereka, mereka akan mengalami kebuntuan. Ini berarti bahwa setiap utas akan menunggu yang lain untuk melepaskan penahanan bersamanya pada kunci, dan tidak akan melepaskan penangguhan bersamanya sampai yang lain melakukannya.
FltAcquireResourceExclusive adalah pembungkus untuk ExAcquireResourceExclusiveLite yang menonaktifkan pengiriman APC kernel normal.
Karena FltAcquireResourceExclusive menonaktifkan pengiriman APC kernel normal, tidak perlu memanggil KeEnterCriticalRegion atau FsRtlEnterFileSystem sebelum memanggil FltAcquireResourceExclusive.
Untuk merilis sumber daya setelah diperoleh, panggil FltReleaseResource. Setiap panggilan yang berhasil ke FltAcquireResourceExclusive harus dicocokkan dengan panggilan berikutnya ke FltReleaseResource.
Untuk memperoleh sumber daya untuk akses bersama, hubungi FltAcquireResourceShared.
Untuk menghapus sumber daya dari daftar sumber daya sistem, panggil ExDeleteResourceLite.
Untuk menginisialisasi sumber daya untuk digunakan kembali, panggil ExReinitializeResourceLite.
Untuk informasi selengkapnya tentang struktur ERESOURCE, lihat Pengantar Rutinitas ERESOURCE.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP SP2 |
Server minimum yang didukung | Windows Server 2003 SP1 |
Header | fltkernel.h |
Pustaka | FltMgr.lib |
IRQL | IRQL <= APC_LEVEL |