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이거나 호출자가 제공한 Allocate 함수의 진입점을 지정하는 함수 진입점으로, 호출될 때마다 Size 멤버에 지정된 크기의 항목을 할당합니다. AllocateNULL이면 NdisAllocateFromNPagedLookasideList 함수는 이후에 호출자를 대신하여 항목을 할당합니다. 호출자가 Allocate 함수를 제공하는 경우 Free 함수도 제공해야 합니다.

[in, optional] Free

NULL이거나 호출자가 제공한 Free 함수의 진입점을 지정하는 함수 진입점으로, 호출될 때마다 Size 멤버에 지정된 크기의 항목을 해제합니다. FreeNULL이면 NdisFreeToNPagedLookasideList 함수는 이후에 호출자를 대신하여 항목을 해제합니다.

[in] Flags

0이어야 합니다. 이 매개 변수는 예약되어 있습니다.

[in] Size

이후에 lookaside 목록에서 할당할 각 항목의 크기(바이트)입니다.

[in] Tag

lookaside 목록 항목에 대한 호출자가 제공한 풀 태그입니다. 태그는 작은따옴표(예: 'derF')로 구분된 4자의 문자열입니다. 일반적으로 문자는 역순으로 지정되므로 디버거에서 풀을 덤프하거나 풀 사용량을 추적할 때 더 쉽게 읽을 수 있습니다.

[in] Depth

0이어야 합니다. 이 매개 변수도 예약되어 있습니다.

반환 값

없음

설명

NdisInitializeNPagedLookasideList 는 호출자가 제공한 목록 헤드를 초기화하지만 목록 항목에 대한 메모리를 할당하지 않습니다. 초기 항목은 에 대한 호출을 사용하여 필요에 따라 할당됩니다. NdisAllocateFromNPagedLookasideList 함수 또는 Allocate 매개 변수의 드라이버 제공 할당 콜백 함수에 의한 함수입니다. 드라이버가 항목을 목록으로 다시 해제할 때 목록이 채워집니다. NdisFreeToNPagedLookasideList 함수입니다. 시스템에서 결정되지만 동적으로 크기가 지정된 제한에 도달할 때까지 항목이 목록에 수집됩니다. 그런 다음 lookaside 목록의 모든 잉여 항목은 NdisFreeToNPagedLookasideList 또는 Free 매개 변수에서 드라이버 제공 Free 콜백 함수 호출을 통해 비페이지 풀로 반환됩니다.

lookaside 목록의 모든 항목은 크기가 같으며 Size 매개 변수에 지정됩니다. lookaside 목록은 미해결 I/O 작업에 대한 런타임 상태를 유지할 수 있는 고정 크기 컨텍스트 영역을 동적으로 할당하고 해제해야 하는 드라이버에 특히 유용합니다. instance 경우 연결 지향 NDIS 드라이버는 특히 유용한 lookaside 목록을 찾을 수 있습니다. 이러한 드라이버는 일반적으로 발신 및 수신 호출을 추적하기 위해 동적 컨텍스트 영역 집합을 유지 관리하기 때문입니다.

드라이버가 다음을 허용하는 것이 더 효율적입니다. NdisAllocateFromNPagedLookasideList NdisFreeToNPagedLookasideList 함수는 항목의 할당 및 할당 취소를 관리합니다( ExAllocatePoolWithTagExFreePool 함수 참조). 그러나 메모리 사용량에 대해 내부적으로 상태를 추적하는 드라이버는 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)

추가 정보

ExAllocatePoolWithTag

ExFreePool

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLookasideList