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