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

CONTAINING_RECORD

NdisAllocateSpinLock

NdisInitializeListHead

NdisInterlockedInsertHeadList NdisInterlockedInsertTailList