NdisInitializeNPagedLookasideList 함수(ndis.h)
NdisInitializeNPagedLookasideList 함수는 lookaside 목록을 초기화합니다. 초기화에 성공하면 페이징되지 않은 고정 크기 블록을 할당하고 lookaside 목록으로 해제할 수 있습니다.
구문
void NdisInitializeNPagedLookasideList(
[in] PNPAGED_LOOKASIDE_LIST Lookaside,
[in, optional] PALLOCATE_FUNCTION Allocate,
[in, optional] PFREE_FUNCTION Free,
[in] ULONG Flags,
[in] SIZE_T Size,
[in] ULONG Tag,
[in] USHORT Depth
);
매개 변수
[in] Lookaside
초기화할 호출자 제공 lookaside 목록 헤드가 포함된 NPAGED_LOOKASIDE_LIST 구조체에 대한 포인터입니다. 구조체는 64비트 플랫폼에서 16비트 정렬되어야 합니다. 드라이버는 상주하는 목록 헤드( 즉, 페이지가 없는 시스템 공간에)를 제공해야 합니다.
[in, optional] Allocate
NULL이거나 호출될 때마다 Size 멤버에 지정된 크기의 항목을 할당하는 호출자 제공 Allocate 함수의 진입점을 지정하는 함수 진입점입니다. 할당이 NULL이면 NdisAllocateFromNPagedLookasideList 함수는 이후에 호출자를 대신하여 항목을 할당합니다. 호출자가 Allocate 함수를 제공하는 경우 Free 함수도 제공해야 합니다.
[in, optional] Free
NULL이거나 호출될 때마다 Size 멤버에 지정된 크기의 항목을 해제하는 호출자 제공 Free 함수의 진입점을 지정하는 함수 진입점입니다. Free가 NULL인 경우 NdisFreeToNPagedLookasideList 함수는 이후에 호출자를 대신하여 항목을 해제합니다.
[in] Flags
0이어야 합니다. 이 매개 변수는 예약되어 있습니다.
[in] Size
이후 lookaside 목록에서 할당할 각 항목의 크기(바이트)입니다.
[in] Tag
lookaside 목록 항목에 대한 호출자 제공 풀 태그입니다. 태그는 작은따옴표(예: 'derF')로 구분된 4자의 문자열입니다. 일반적으로 문자는 역순으로 지정되므로 디버거에서 풀을 덤프하거나 풀 사용량을 추적할 때 더 쉽게 읽을 수 있습니다.
[in] Depth
0이어야 합니다. 이 매개 변수도 예약되어 있습니다.
반환 값
없음
설명
NdisInitializeNPagedLookasideList 는 호출자 제공 목록 헤드를 초기화하지만 목록 항목에 대한 메모리를 할당하지 않습니다. 초기 항목은 NdisAllocateFromNPagedLookasideList 함수를 호출하거나 할당 매개 변수의 드라이버 제공 할당 콜백 함수에 의해 필요에 따라 할당됩니다. 드라이버가 NdisFreeToNPagedLookasideList 함수를 사용하여 목록으로 항목을 다시 해제하면 목록이 채워집니다. 항목은 시스템에서 결정되지만 동적으로 크기가 지정된 제한에 도달할 때까지 목록에 수집됩니다. 그런 다음 lookaside 목록의 모든 잉여 항목은 NdisFreeToNPagedLookasideList 또는 Free 매개 변수에서 드라이버 제공 Free 콜백 함수 호출을 통해 페이지가 없는 풀로 반환됩니다.
lookaside 목록의 모든 항목은 크기가 같으며 Size 매개 변수에 지정됩니다. lookaside 목록은 처리 중인 I/O 작업에 대한 런타임 상태를 유지할 수 있는 고정 크기 컨텍스트 영역을 동적으로 할당하고 해제해야 하는 드라이버에 특히 유용합니다. 예를 들어 연결 지향 NDIS 드라이버는 특히 유용하게 보이는 목록을 찾을 수 있습니다. 이러한 드라이버는 일반적으로 나가는 호출과 들어오는 호출을 추적하기 위해 동적 컨텍스트 영역 집합을 유지 관리하기 때문입니다.
드라이버에서 NdisAllocateFromNPagedLookasideList 및 NdisFreeToNPagedLookasideList 함수가 항목의 할당 및 할당 취소를 관리할 수 있도록 하는 것이 더 효율적입니다( ExAllocatePoolWithTag 및 ExFreePool 함수 참조). 그러나 메모리 사용량에 대해 내부적으로 상태를 추적하는 드라이버는 NdisInitializeNPagedLookasideList에 할당 및 무료 함수를 제공할 수 있습니다.
NdisInitializeNPagedLookasideList의 호출자는 IRQL <= DISPATCH_LEVEL 실행되어야 하지만 일반적으로 PASSIVE_LEVEL 실행됩니다.
요구 사항
| 지원되는 최소 클라이언트 | Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisInitializeNPagedLookasideList(NDIS 5.1) 참조)에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisInitializeNPagedLookasideList(NDIS 5.1) 참조)에 대해 지원됩니다. |
| 대상 플랫폼 | 데스크톱 |
| 머리글 | ndis.h(Ndis.h 포함) |
| IRQL | <= DISPATCH_LEVEL(주의 섹션 참조) |
| DDI 규정 준수 규칙 | Irql_Miscellaneous_Function(ndis) |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기