Fungsi ExInterlockedInsertTailList (wdm.h)

Rutinitas ExInterlockedInsertTailList secara atomik menyisipkan entri di akhir daftar struktur LIST_ENTRY yang ditautkan ganda.

Sintaks

PLIST_ENTRY ExInterlockedInsertTailList(
  [in, out] PLIST_ENTRY                  ListHead,
  [in, out] __drv_aliasesMem PLIST_ENTRY ListEntry,
  [in, out] PKSPIN_LOCK                  Lock
);

Parameter

[in, out] ListHead

Penunjuk ke struktur LIST_ENTRY yang berfungsi sebagai header daftar.

[in, out] ListEntry

Penunjuk ke struktur LIST_ENTRY yang mewakili entri yang akan disisipkan ke dalam daftar.

[in, out] Lock

Penunjuk ke struktur KSPIN_LOCK yang berfungsi sebagai kunci putar yang digunakan untuk menyinkronkan akses ke daftar. Penyimpanan untuk kunci putaran harus residen dan harus diinisialisasi dengan memanggil KeInitializeSpinLock. Anda harus menggunakan kunci spin ini hanya dengan rutinitas ExInterlockedXxxList .

Nilai kembali

ExInterlockedInsertTailList mengembalikan penunjuk ke entri terakhir daftar sebelum entri baru disisipkan. Jika daftar kosong, rutinitas mengembalikan NULL.

Keterangan

ExInterlockedInsertTailList melakukan operasi yang sama dengan InsertTailList, tetapi secara atomik. Jangan mencampur panggilan atomik dan non-atomik pada daftar yang sama.

Untuk informasi selengkapnya tentang menggunakan rutinitas ini untuk mengimplementasikan daftar tertaut dua kali lipat, lihat Lists Tertaut Singly dan Doubly.

Rutinitas ExInterlockedInsertTailList dapat dipanggil di IRQL apa pun. Penyimpanan untuk parameter ListHead dan entri daftar harus residen di semua IRQL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Tingkat apa pun (lihat bagian Keterangan)
Aturan kepatuhan DDI IoAllocateFree(wdm), IoReuseIrp(wdm), MarkingInterlockedQueuedIrps(wdm), RemoveLockCheck(wdm), RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wdm), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead(wdm), RemoveLockForwardRead2(wdm), RemoveLockForwardWrite(wdm), RemoveLockForwardWrite2(wdm), RemoveLockRelease2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm)

Lihat juga

ExInterlockedInsertHeadList

InitializeListHead

InsertTailList

KeInitializeSpinLock