Fungsi ExAcquireResourceExclusiveLite (wdm.h)

Rutinitas ExAcquireResourceExclusiveLite memperoleh sumber daya yang diberikan untuk akses eksklusif oleh utas panggilan.

Sintaks

BOOLEAN ExAcquireResourceExclusiveLite(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

Parameter

[in, out] Resource

Penunjuk ke sumber daya untuk diperoleh.

[in] Wait

Menentukan perilaku rutin setiap kali sumber daya tidak dapat segera diperoleh. Jika TRUE, penelepon dimasukkan ke dalam status tunggu hingga sumber daya dapat diperoleh. Jika FALSE, rutinitas segera kembali, terlepas dari apakah sumber daya dapat diperoleh.

Nilai kembali

ExAcquireResourceExclusiveLite mengembalikan TRUE jika sumber daya diperoleh. Rutinitas ini mengembalikan FALSE jika input TungguFALSE dan akses eksklusif tidak dapat segera diberikan.

Keterangan

Daftar berikut menjelaskan apakah dan kapan penelepon diberikan akses eksklusif ke sumber daya tertentu:

  • 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.-

  • Jika penelepon telah berbagi akses ke sumber daya, penelepon harus melepaskan kunci sebelum mencoba untuk 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.

Pemanggil dapat merilis sumber daya dengan memanggil ExReleaseResourceLite atau ExReleaseResourceForThreadLite.

Pengiriman APC kernel normal harus dinonaktifkan sebelum memanggil rutinitas ini. Nonaktifkan pengiriman APC kernel normal dengan memanggil KeEnterCriticalRegion. Pengiriman harus tetap dinonaktifkan sampai sumber daya dirilis, di mana sumber daya dapat diaktifkan kembali dengan memanggil KeLeaveCriticalRegion. Untuk informasi selengkapnya, lihat Menonaktifkan APC.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL
Aturan kepatuhan DDI ExclusiveResourceAccess(wdm), HwStorPortProhibitedDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Lihat juga

ExAcquireResourceSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredExclusiveLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite

ExReleaseResourceLite

KeEnterCriticalRegion

KeLeaveCriticalRegion