Makro NdisInterlockedInsertTailList (ndis.h)

Fungsi NdisInterlockedInsertTailList menyisipkan entri, biasanya paket, di ekor daftar yang ditautkan dua kali sehingga akses ke daftar disinkronkan dengan cara multiprosesor-aman.

Sintaks

void NdisInterlockedInsertTailList(
  [in]  _ListHead,
  [in]  _ListEntry,
  [in]  _SpinLock
);

Parameter

[in] _ListHead

Penunjuk ke kepala daftar yang ditautkan ganda tempat entri akan disisipkan.

[in] _ListEntry

Penunjuk ke entri yang akan disisipkan di akhir daftar.

[in] _SpinLock

Penunjuk ke kunci putar yang disediakan penelepon, digunakan untuk menyinkronkan akses ke daftar.

Nilai kembali

Tidak ada

Keterangan

Sebelum memanggil NdisInterlockedInsertTailList, 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.

Kunci putar yang disediakan penelepon mencegah fungsi lain mengakses antrean internal driver sementara NdisInterlockedInsertTailList memasukkan entri yang diberikan, bahkan ketika driver berjalan pada mesin multiprosesor.

NdisInterlockedInsertTailList 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 NdisInterlockedInsertTailList 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 NdisInterlockedInsertTailList dipanggil di IRQL >= DISPATCH_LEVEL, penyimpanan untuk parameter ListHead dan entri daftar harus residen.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung untuk driver NDIS 6.0 dan NDIS 5.1 (lihat NdisInterlockedInsertTailList (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat NdisInterlockedInsertTailList (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 NdisInterlockedRemoveHeadList