NdisInterlockedInsertTailList 매크로(ndis.h)
NdisInterlockedInsertTailList 함수는 목록에 대한 액세스가 다중 프로세서로부터 안전한 방식으로 동기화되도록 이중으로 연결된 목록의 꼬리에 항목(일반적으로 패킷)을 삽입합니다.
통사론
void NdisInterlockedInsertTailList(
[in] _ListHead,
[in] _ListEntry,
[in] _SpinLock
);
매개 변수
[in] _ListHead
항목을 삽입할 두 배로 연결된 목록의 머리글에 대한 포인터입니다.
[in] _ListEntry
목록 끝에 삽입할 항목에 대한 포인터입니다.
[in] _SpinLock
목록에 대한 액세스를 동기화하는 데 사용되는 호출자 제공 스핀 잠금에 대한 포인터입니다.
반환 값
없음
발언
NdisInterlockedInsertTailList호출하기 전에 드라이버는 NdisInitializeListHead 함수와 NdisAllocateSpinLock 함수를 사용하여 SpinLock 변수를 사용하여 ListHead 변수를 초기화해야 합니다. 또한 드라이버는 이러한 변수 및 내부 큐에 대한 상주 스토리지를 제공해야 합니다.
호출자가 제공하는 스핀 잠금은 드라이버가 다중 프로세서 컴퓨터에서 실행되는 경우에도 NdisInterlockedInsertTailList 지정된 항목을 삽입하는 동안 다른 함수가 드라이버의 내부 큐에 액세스하지 못하게 합니다.
NdisInterlockedInsertTailList 지정된 스핀 잠금을 획득하고 컨트롤을 반환하기 전에 원래 IRQL을 복원할 때 IRQL을 DISPATCH_LEVEL 발생합니다. 따라서 NdisInterlockedInsertTailList 호출하는 드라이버 함수는 페이저블 코드가 될 수 없습니다.
반환된 값을 삽입된 항목의 주소로 다시 변환하기 위해 드라이버는 CONTAINING_RECORD 매크로를 사용할 수 있습니다.
NdisInterlockedInsertTailList IRQL >= DISPATCH_LEVEL 호출되면 ListHead 매개 변수에 대한 스토리지 및 목록 항목이 상주해야 합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisInterlockedInsertTailList(NDIS 5.1 참조)에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisInterlockedInsertTailList(NDIS 5.1) 참조)에 대해 지원됩니다. |
대상 플랫폼 | 보편적 |
헤더 | ndis.h(Ndis.h 포함) |
라이브러리 | Ndis.lib |
IRQL | 모든 수준 |