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

MiniportDisableInterruptEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisDprReleaseSpinLock

NdisMSynchronizeWithInterruptEx

NetTimerCallback