Pengantar Rutinitas ERESOURCE
Sistem ini menyediakan rutinitas untuk memperoleh dan merilis struktur ERESOURCE, serta untuk memeriksa statusnya saat ini.
Memperoleh dan Merilis Struktur ERESOURCE
Driver dapat menggunakan struktur ERESOURCE untuk menerapkan sinkronisasi eksklusif/bersama. Sinkronisasi eksklusif/bersama berfungsi sebagai berikut:
Sejumlah utas dapat memperoleh ERESOURCE seperti yang dibagikan.
Hanya satu utas yang dapat memperoleh ERESOURCE secara eksklusif. ERESOURCE hanya dapat diperoleh secara eksklusif jika tidak ada utas yang telah memperolehnya sebagai bersama.
Utas yang saat ini tidak dapat memperoleh ERESOURCE secara opsional dapat dimasukkan ke dalam status tunggu hingga ERESOURCE dapat diperoleh. Sistem ini mempertahankan dua daftar utas yang menunggu ERESOURCE: daftar pelayan eksklusif dan daftar pelayan bersama.
Penggunaan umum untuk sinkronisasi eksklusif/bersama adalah menerapkan kunci baca/tulis. Kunci baca/tulis memungkinkan beberapa utas untuk melakukan operasi baca, tetapi hanya satu utas yang dapat menulis pada satu waktu. Ini dapat diimplementasikan langsung dalam hal memperoleh ERESOURCE.
Driver mengalokasikan penyimpanan untuk ERESOURCE dan menginisialisasinya dengan ExInitializeResourceLite. Sistem ini mempertahankan daftar semua struktur ERESOURCE yang digunakan. Ketika driver tidak lagi memerlukan ERESOURCE tertentu, driver harus memanggil ExDeleteResourceLite untuk menghapusnya dari daftar sistem. Driver juga dapat menggunakan kembali ERESOURCE dengan memanggil ExReinitializeResourceLite.
Driver dapat melakukan operasi dasar berikut pada ERESOURCE:
Dapatkan ERESOURCE sebagaimana dibagikan dengan ExAcquireResourceSharedLite. Rutinitas ini memperoleh sumber daya hanya jika sumber daya belum diperoleh secara eksklusif dan tidak ada pelayan eksklusif.
Dapatkan ERESOURCE secara eksklusif dengan ExAcquireResourceExclusiveLite. Rutinitas ini memperoleh sumber daya selama belum diperoleh baik secara eksklusif maupun bersama.
Konversikan akuisisi eksklusif menjadi akuisisi bersama dengan ExConvertExclusiveToSharedLite.
Merilis sumber daya yang diperoleh dengan ExReleaseResourceLite.
Parameter TungguExAcquireResourceSharedLite dan ExAcquireResourceExclusiveLite menentukan apakah utas saat ini menunggu ERESOURCE diperoleh. Jika Anda menentukan nilai FALSE dan ERESOURCE tidak dapat diperoleh, maka rutinitas mengembalikan FALSE. Jika Anda menentukan nilai TRUE, maka utas saat ini dimasukkan ke daftar tunggu yang sesuai untuk ERESOURCE.
Memeriksa Status Struktur ERESOURCE
Driver juga dapat menentukan status ERESOURCE saat ini, sebagai berikut:
Gunakan ExIsResourceAcquiredLite atau ExIsResourceAcquiredSharedLite untuk menentukan apakah ERESOURCE telah diperoleh sebagai bersama atau eksklusif. Gunakan ExIsResourceAcquiredExclusiveLite untuk memeriksa apakah ERESOURCE telah diperoleh secara eksklusif.
Gunakan ExGetSharedWaiterCount untuk menentukan jumlah pelayan bersama untuk ERESOURCE, dan gunakan ExGetExclusiveWaiterCount untuk menentukan jumlah pelayan eksklusif untuk ERESOURCE.
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