Bagikan melalui


Fungsi ExAcquireSharedStarveExclusive (wdm.h)

Rutinitas ExAcquireSharedStarveExclusive memperoleh sumber daya tertentu untuk akses bersama tanpa menunggu upaya yang tertunda untuk memperoleh akses eksklusif ke sumber daya yang sama.

Sintaks

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

Parameter

[in, out] Resource

Pointer ke sumber daya yang akan diperoleh untuk akses bersama.

[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

ExAcquireSharedStarveExclusive mengembalikan TRUE jika akses yang diminta diberikan. Rutinitas ini mengembalikan FALSE jika input TungguADALAH FALSE dan akses bersama tidak dapat segera diberikan.

Keterangan

Apakah atau kapan penelepon diberikan akses bersama ke sumber daya yang diberikan bergantung pada hal berikut:

  • Jika sumber daya saat ini tidak memiliki izin, akses bersama diberikan segera ke utas saat ini.
  • Jika penelepon sudah memperoleh sumber daya (untuk akses bersama atau eksklusif), utas saat ini diberikan jenis akses yang sama secara rekursif. Perhatikan bahwa melakukan panggilan ini tidak mengonversi akses eksklusif penelepon dari sumber daya tertentu ke akses bersama.
  • Jika sumber daya saat ini dimiliki sebagai dibagikan oleh utas lain, akses bersama diberikan kepada pemanggil segera, bahkan jika utas lain sedang menunggu akses eksklusif ke sumber daya tersebut.
  • Jika sumber daya saat ini dimiliki sebagai eksklusif oleh utas lain, pemanggil dimasukkan ke dalam status tunggu (Tunggu diatur ke TRUE) atau ExAcquireSharedStarveExclusive mengembalikan FALSE.
Penelepon ExAcquireSharedStarveExclusive biasanya memerlukan akses cepat ke sumber daya bersama untuk menyimpan pengakses eksklusif dari melakukan pekerjaan redundan. Misalnya, sistem file mungkin memanggil rutinitas ini untuk memodifikasi sumber daya yang di-cache, seperti BCB yang disematkan di cache, sebelum manajer cache dapat memperoleh akses eksklusif ke sumber daya dan menulis cache ke disk.

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.

Pemanggil dapat merilis sumber daya dengan memanggil ExReleaseResourceLite atau ExReleaseResourceForThreadLite.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Lihat juga

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite

ExGetExclusiveWaiterCount

ExIsResourceAcquiredExclusiveLite

ExIsResourceAcquiredSharedLite