ExInterlockedInsertTailList 함수(wdm.h)

ExInterlockedInsertTailList 루틴은 두 배로 연결된 LIST_ENTRY 구조 목록의 끝에 항목을 원자적으로 삽입합니다.

구문

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

매개 변수

[in, out] ListHead

목록 헤더 역할을 하는 LIST_ENTRY 구조체에 대한 포인터입니다.

[in, out] ListEntry

목록에 삽입할 항목을 나타내는 LIST_ENTRY 구조체에 대한 포인터입니다.

[in, out] Lock

목록에 대한 액세스를 동기화하는 데 사용되는 스핀 잠금 역할을 하는 KSPIN_LOCK 구조체에 대한 포인터입니다. 스핀 잠금에 대한 스토리지는 상주해야 하며 KeInitializeSpinLock을 호출하여 초기화되어야 합니다. ExInterlockedXxx목록 루틴에서만 이 스핀 잠금을 사용해야 합니다.

반환 값

ExInterlockedInsertTailList 는 새 항목을 삽입 하기 전에 목록의 마지막 항목에 대한 포인터를 반환합니다. 목록이 비어 있으면 루틴은 NULL을 반환합니다.

설명

ExInterlockedInsertTailListInsertTailList와 동일한 작업을 수행하지만 원자성으로 수행합니다. 동일한 목록에서 원자성 및 비원자 호출을 혼합하지 마세요.

이 루틴을 사용하여 이중으로 연결된 목록을 구현하는 방법에 대한 자세한 내용은 Singly 및 이중 연결 Lists 참조하세요.

ExInterlockedInsertTailList 루틴은 모든 IRQL에서 호출할 수 있습니다. ListHead 매개 변수 및 목록 항목에 대한 스토리지는 모든 IRQL에 상주해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 모든 수준(설명 섹션 참조)
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)

추가 정보

ExInterlockedInsertHeadList

InitializeListHead

InsertTailList

KeInitializeSpinLock