Makro NdisInterlockedRemoveHeadList (ndis.h)
Fungsi NdisInterlockedRemoveHeadList menghapus entri, biasanya paket, dari kepala daftar yang ditautkan dua kali lipat sehingga akses ke daftar disinkronkan dengan cara multiprosesor-aman.
Sintaks
PLIST_ENTRY NdisInterlockedRemoveHeadList(
[in] _ListHead,
[in] _SpinLock
);
Parameter
[in] _ListHead
Penunjuk ke kepala daftar tertaut ganda tempat entri akan dihapus.
[in] _SpinLock
Penunjuk ke kunci putar yang disediakan penelepon, digunakan untuk menyinkronkan akses ke daftar.
Nilai kembali
NdisInterlockedRemoveHeadList mengembalikan penunjuk ke struktur LIST_ENTRY dihapus dari daftar. Jika daftar kosong, rutinitas mengembalikan NULL.
Keterangan
Sebelum memanggil NdisInterlocked.. Fungsi daftar , driver harus menginisialisasi variabel di ListHead dengan fungsi NdisInitializeListHead dan variabel di SpinLock dengan fungsi NdisAllocateSpinLock . Driver juga harus menyediakan penyimpanan residen untuk variabel ini dan untuk antrean internalnya.
Sebelum memanggil NdisInterlockedRemoveHeadList, entri diantrekan dengan satu atau beberapa panggilan ke NdisInterlockedInsert.. Mencantumkan fungsi.
Kunci putar yang disediakan penelepon mencegah fungsi lain mengakses antrean internal driver saat NdisInterlockedRemoveHeadList menghapus entri, bahkan ketika driver berjalan pada komputer multiprosesor.
NdisInterlockedRemoveHeadList menaikkan IRQL ke DISPATCH_LEVEL ketika memperoleh kunci putar yang diberikan dan memulihkan IRQL asli sebelum mengembalikan kontrol. Akibatnya, fungsi driver apa pun yang memanggil NdisInterlockedRemoveHeadList tidak dapat menjadi kode yang dapat dipaginasi.
Untuk mengonversi nilai yang dikembalikan kembali ke alamat entri yang disisipkan, driver dapat menggunakan makro CONTAINING_RECORD .
Jika NdisInterlockedRemoveHeadList dipanggil di IRQL >= DISPATCH_LEVEL, penyimpanan untuk parameter ListHead harus residen.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung untuk driver NDIS 6.0 dan NDIS 5.1 (lihat NdisInterlockedRemoveHeadList (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat NdisInterlockedRemoveHeadList (NDIS 5.1)) di Windows XP. |
Target Platform | Universal |
Header | ndis.h (termasuk Ndis.h) |
Pustaka | Ndis.lib |
IRQL | Tingkat apa pun |
Lihat juga
NdisInterlockedInsertHeadList NdisInterlockedInsertTailListSaran 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