Fungsi ExInterlockedPushEntryList (wdm.h)

Rutinitas ExInterlockedPushEntryList secara atomik menyisipkan entri di awal daftar struktur SINGLE_LIST_ENTRY yang ditautkan secara senyap.

Sintaks

PSINGLE_LIST_ENTRY ExInterlockedPushEntryList(
  [in, out] PSINGLE_LIST_ENTRY                  ListHead,
  [in, out] __drv_aliasesMem PSINGLE_LIST_ENTRY ListEntry,
  [in, out] PKSPIN_LOCK                         Lock
);

Parameter

[in, out] ListHead

Penunjuk ke struktur SINGLE_LIST_ENTRY yang berfungsi sebagai header daftar. Penyimpanan untuk ListHead harus residen di semua IRQL.

[in, out] ListEntry

Penunjuk ke struktur SINGLE_LIST_ENTRY yang mewakili entri yang akan disisipkan ke dalam daftar. Penyimpanan untuk ListEntry harus menjadi residen di semua IRQL.

[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

ExInterlockedPushEntryList mengembalikan penunjuk ke entri pertama daftar sebelum entri baru disisipkan. Jika daftar kosong, rutinitas mengembalikan NULL.

Keterangan

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

Untuk informasi selengkapnya tentang menggunakan rutinitas ini untuk mengimplementasikan daftar yang ditautkan secara senyap, lihat Lists Tertaut Singly dan Doubly.

Rutinitas ExInterlockedPushEntryList 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

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntryList

ExInterlockedPushEntrySList

KeInitializeSpinLock

PushEntryList