Makro NdisDprAcquireSpinLock (ndis.h)
Fungsi NdisDprAcquireSpinLock memperoleh kunci putar sehingga pemanggil dapat menyinkronkan akses ke sumber daya yang dibagikan di antara fungsi driver non-ISR dengan cara multiprosesor-aman.
Sintaks
void NdisDprAcquireSpinLock(
[in] _SpinLock
);
Parameter
[in] _SpinLock
Penunjuk ke kunci putar buram, sudah diinisialisasi oleh pemanggil.
Nilai kembali
Tidak ada
Keterangan
Driver miniport harus menginisialisasi variabel jenis NDIS_SPIN_LOCK dengan NdisAllocateSpinLock sebelum memanggil Ndis lainnya.. Fungsi SpinLock . Driver harus menyediakan penyimpanan residen untuk kunci putaran yang digunakannya.
NdisDprAcquireSpinLock adalah versi NdisAcquireSpinLock yang dioptimalkan yang hanya dapat dipanggil driver miniport saat berjalan di IRQL = DISPATCH_LEVEL.
Setelah memperoleh kunci putaran dengan NdisDprAcquireSpinLock, pemanggil harus melepaskan kunci tersebut dengan panggilan ke NdisDprReleaseSpinLock. Driver miniport harus memanggil NdisDprReleaseSpinLock setelah setiap panggilan ke NdisDprAcquireSpinLock. Jika tidak, kebuntuan terjadi, menggantung pengemudi.
Kunci spin yang diperoleh dengan NdisDprAcquireSpinLock harus dirilis dengan NdisDprReleaseSpinLock. Kunci spin yang diperoleh dengan NdisAcquireSpinLock harus dilepaskan dengan NdisReleaseSpinLock.
Driver tidak boleh memegang kunci putaran untuk jangka waktu yang lama (lebih dari beberapa instruksi). Memegang kunci putaran lebih dari 25 mikrodetik menurunkan performa sistem dan driver.
Driver miniport tidak dapat menggunakan kunci putar untuk melindungi sumber daya yang dibagikan fungsi lain dengan MiniportInterrupt dan/atau Fungsi MiniportDisableInterruptEx . Sebagai gantinya, driver miniport harus memanggil NdisMSynchronizeWithInterruptEx sehingga Fungsi MiniportSynchronizeInterrupt mengakses sumber daya bersama tersebut di DIRQL yang sama di mana
Fungsi MiniportInterrupt dan/atau MiniportDisableInterruptEx melakukannya.
Untuk informasi selengkapnya tentang memperoleh dan merilis kunci spin NDIS, lihat Sinkronisasi dan Pemberitahuan di Driver Jaringan.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung untuk driver NDIS 6.0 dan NDIS 5.1 (lihat NdisDprAcquireSpinLock (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat NdisDprAcquireSpinLock (NDIS 5.1)) di Windows XP. |
Target Platform | Universal |
Header | ndis.h (termasuk Ndis.h) |
Pustaka | Ndis.lib |
IRQL | DISPATCH_LEVEL |
Aturan kepatuhan DDI | Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis) |
Lihat juga
MiniportSynchronizeInterrupt NdisMSynchronizeWithInterruptExSaran 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