ExInterlockedPushEntrySList 매크로(wdm.h)
ExInterlockedPushEntrySList 루틴은 시퀀싱된 singly 연결된 목록의 시작 부분에 항목을 원자적으로 삽입합니다.
구문
NTKERNELAPI
PSLIST_ENTRY
FASTCALL
ExInterlockedPushEntrySList (
_Inout_ PSLIST_HEADER ListHead,
_Inout_ __drv_aliasesMem PSLIST_ENTRY ListEntry,
_Inout_opt_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock
);
매개 변수
ListHead
시퀀싱된 singly 연결된 목록의 헤더 역할을 하는 SLIST_HEADER 구조체에 대한 포인터입니다. ListHead 는 ExInitializeSListHead를 호출하여 초기화되어야 합니다.
ListEntry
삽입할 호출자가 할당한 항목에 대한 포인터입니다.
[in, out] Lock
목록에 대한 액세스를 동기화하는 데 사용되는 스핀 잠금 역할을 하는 KSPIN_LOCK 구조체에 대한 포인터입니다. 스핀 잠금에 대한 스토리지는 상주해야 하며 KeInitializeSpinLock을 호출하여 초기화되어야 합니다. ExInterlockedXxx목록 루틴에서만 이 스핀 잠금을 사용해야 합니다.
반환 값
지정된 목록에 항목이 있는 경우 ExInterlockedPushEntrySList 는 목록의 항목인 첫 번째 SLIST_ENTRY 구조체에 대한 포인터를 반환합니다. 그렇지 않으면 NULL을 반환합니다.
설명
이 루틴을 사용하여 시퀀싱된 연결 목록을 구현하는 방법에 대한 자세한 내용은 Singly 및 Doubly Linked Lists.
Windows 2000에서 드라이버는 -D_WIN2K_COMPAT_SLIST_USAGE 스위치를 사용하여 ExInterlockedPushEntrySList를 사용하는 코드를 성공적으로 연결해야 합니다.
ExInterlockedPushEntrySList 루틴은 모든 IRQL에서 호출할 수 있습니다. ListHead 매개 변수 및 목록 항목에 대한 스토리지는 모든 IRQL에 상주해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 모든 수준(설명 섹션 참조) |