FREE_FUNCTION_EX 콜백 함수(wdm.h)

LookasideListFreeEx 루틴은 클라이언트가 전체인 lookaside 목록에 항목을 삽입하려고 할 때 lookaside-list 항목에 대한 스토리지를 해제합니다.

구문

FREE_FUNCTION_EX FreeFunctionEx;

void FreeFunctionEx(
  [in]      PVOID Buffer,
  [in, out] PLOOKASIDE_LIST_EX Lookaside
)
{...}

매개 변수

[in] Buffer

해제할 lookaside-list 항목에 대한 포인터입니다.

[in, out] Lookaside

lookaside 목록을 설명하는 LOOKASIDE_LIST_EX 구조체에 대한 포인터입니다. 이 구조는 이전에 ExInitializeLookasideListEx 루틴에 의해 초기화되었습니다.

반환 값

없음

설명

lookaside 목록을 만드는 드라이버는 목록이 가득 차 더 이상 버퍼를 포함할 수 없을 때 이전에 할당된 버퍼를 해제하기 위해 LookasideListFreeEx 루틴을 구현할 수 있습니다. 사용하지 않는 버퍼는 목록에 항목으로 저장됩니다. lookaside 목록의 모든 항목은 목록이 초기화될 때 드라이버가 지정하는 균일한 크기의 버퍼입니다.

드라이버는 lookaside 목록을 초기화하는 ExInitializeLookasideListEx 호출에서 입력 매개 변수로 사용자 지정 LookasideListFreeEx 루틴에 대한 포인터를 제공합니다. 드라이버가 이 매개 변수를 NULL로 설정하는 경우 lookaside 목록은 기본 할당 취소 루틴을 대신 사용합니다.

드라이버는 ExFreeToLookasideListEx 루틴을 호출하여 이전에 할당된 항목을 lookaside 목록에 삽입합니다. 목록이 가득 차면(즉, 목록에 시스템 결정 최대 항목 수가 이미 포함되어 있는 경우) ExFreeToLookasideListExLookasideListFreeEx 를 호출하여 항목에 대한 스토리지를 해제합니다.

LookasideListFreeEx 루틴은 Lookaside 매개 변수를 사용하여 드라이버가 lookaside 목록과 연결된 프라이빗 컨텍스트 데이터에 액세스할 수 있습니다. 자세한 내용은 ExInitializeLookasideListEx의 코드 예제를 참조하세요.

lookaside 목록에 대한 자세한 내용은 Lookaside Lists 사용을 참조하세요.

LookasideListFreeEx 루틴은 항목을 해제하는 ExFreeToLookasideListEx 호출과 동일한 IRQL에서 호출됩니다. 호출이 페이징된 메모리에 있는 항목을 해제하려면 호출자가 IRQL <= APC_LEVEL 실행 중이어야 합니다. 페이징되지 않은 메모리에 있는 항목을 해제하기 위한 호출의 경우 호출자는 IRQL <= DISPATCH_LEVEL 실행해야 합니다.

예제

LookasideListFreeEx 콜백 루틴을 정의하려면 먼저 정의 중인 콜백 루틴의 유형을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾는 데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 라는 MyLookasideListFreeExLookasideListFreeEx 콜백 루틴을 정의하려면 이 코드 예제와 같이 FREE_FUNCTION_EX 형식을 사용합니다.

FREE_FUNCTION_EX MyLookasideListFreeEx;

그런 다음 다음과 같이 콜백 루틴을 구현합니다.

_Use_decl_annotations_
VOID
  MyLookasideListFreeEx(
    PVOID  Buffer,
    PLOOKASIDE_LIST_EX  Lookaside
    )
  {
      // Function body
  }

FREE_FUNCTION_EX 함수 형식은 Wdm.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 _Use_decl_annotations_ 주석을 추가해야 합니다. 주석을 _Use_decl_annotations_ 사용하면 헤더 파일의 FREE_FUNCTION_EX 함수 형식에 적용되는 주석이 사용됩니다. 함수 선언에 대한 요구 사항에 대한 자세한 내용은 WDM 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요. 에 대한 _Use_decl_annotations_자세한 내용은 함수 동작 주석 지정을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
IRQL 설명 섹션을 참조하십시오.

추가 정보

ExFreeToLookasideListEx

ExInitializeLookasideListEx

LOOKASIDE_LIST_EX