Export (0) Print
Expand All
Expand Minimize
This topic has not yet been rated - Rate this topic

ExInterlockedInsertTailList routine

The ExInterlockedInsertTailList routine atomically inserts an entry at the end of a doubly linked list of LIST_ENTRY structures.


PLIST_ENTRY ExInterlockedInsertTailList(
  _Inout_  PLIST_ENTRY ListHead,
  _Inout_  PLIST_ENTRY ListEntry,
  _Inout_  PKSPIN_LOCK Lock


ListHead [in, out]

A pointer to the LIST_ENTRY structure that serves as the list header.

ListEntry [in, out]

A pointer to the LIST_ENTRY structure that represents the entry to be inserted into the list.

Lock [in, out]

A pointer to a KSPIN_LOCK structure that serves as the spin lock used to synchronize access to the list. The storage for the spin lock must be resident and must have been initialized by calling KeInitializeSpinLock. You must use this spin lock only with the ExInterlockedXxxList routines.

Return value

ExInterlockedInsertTailList returns a pointer to the last entry of the list before the new entry was inserted. If the list was empty, the routine returns NULL.


ExInterlockedInsertTailList performs the same operation as InsertTailList, but atomically. Do not mix atomic and non-atomic calls on the same list.

For more information about using this routine to implement a doubly linked list, see Singly and Doubly Linked Lists.

The ExInterlockedInsertTailList routine can be called at any IRQL. The storage for the ListHead parameter and the list entries must be resident at all IRQLs.



Available starting with Windows 2000.


Wdm.h (include Wdm.h, Ntddk.h, or Ntifs.h)




Any level (see Remarks section)

DDI compliance rules

IoAllocateFree, IoReuseIrp, MarkingInterlockedQueuedIrps, RemoveLockForward, RemoveLockForward2, RemoveLockForwardDeviceControl, RemoveLockForwardDeviceControl2, RemoveLockForwardDeviceControlInternal, RemoveLockForwardDeviceControlInternal2, RemoveLockForwardRead, RemoveLockForwardRead2, RemoveLockForwardWrite, RemoveLockForwardWrite2, RemoveLockRelease2, RemoveLockReleaseCleanup, RemoveLockReleaseClose, RemoveLockReleaseCreate, RemoveLockReleaseDeviceControl, RemoveLockReleaseInternalDeviceControl, RemoveLockReleasePower, RemoveLockReleaseRead, RemoveLockReleaseShutdown, RemoveLockReleaseSystemControl, RemoveLockReleaseWrite

See also




Send comments about this topic to Microsoft

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
© 2014 Microsoft. All rights reserved.