FltAllocateExtraCreateParameterList 함수(fltkernel.h)

FltAllocateExtraCreateParameterList 루틴은 ECP(추가 만들기 매개 변수) 목록 구조에 대해 페이징된 풀 메모리를 할당하고 해당 구조체에 대한 포인터를 생성합니다.

구문

NTSTATUS FLTAPI FltAllocateExtraCreateParameterList(
  [in]  PFLT_FILTER                  Filter,
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

매개 변수

[in] Filter

미니필터 드라이버에 대한 불투명 필터 포인터입니다. 이 포인터는 미니필터 드라이버를 고유하게 식별하고 미니필터 드라이버가 로드되는 한 일정하게 유지됩니다.

[in] Flags

풀 할당 옵션을 정의합니다. 비트 OR 연산을 사용하여 FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 플래그를 Flags 매개 변수와 결합하면 루틴에 의해 할당된 모든 풀은 현재 프로세스의 메모리 할당량에 대해 요금이 청구됩니다.

[out] EcpList

초기화된 ECP 목록 구조에 대한 포인터를 받습니다. 루틴이 충분한 풀을 할당하지 못한 경우 *EcpListNULL이고 루틴은 코드 STATUS_INSUFFICIENT_RESOURCES 상태 반환합니다.

반환 값

FltAllocateExtraCreateParameterList 는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterList 가 ECP 목록 구조에 충분한 메모리를 할당할 수 없습니다. 이 경우 *EcpListNULL입니다.
STATUS_SUCCESS ECP 목록 구조가 성공적으로 할당되고 초기화되었습니다. 이 경우 초기화된 목록 구조에 대한 포인터가 *EcpList 매개 변수에 반환됩니다.

설명

운영 체제에서 FltAllocateExtraCreateParameterList 가 할당하는 메모리를 자동으로 해제할지 여부는 다음과 같은 경우와 같이 FltAllocateExtraCreateParameterList 가 호출되는 시기에 따라 달라집니다.

  • 호출자는 FltAllocateExtraCreateParameterList 를 호출하여 ECP_LIST 할당하고 호출자가 FltCreateFileEx2 루틴을 호출하기 전에 하나 이상의 ECP 컨텍스트 구조를 추가할 수 있습니다. 이 경우 운영 체제는 ECP 컨텍스트 구조를 해제하지 않습니다. 따라서 호출자는 동일한 ECP 집합을 사용하여 FltCreateFileEx2 를 여러 차례 호출할 수 있습니다. 호출자가 ECP_LIST 완료되면 호출자는 FltFreeExtraCreateParameterList 루틴을 호출하여 ECP_LIST 해제해야 합니다.

  • 파일 시스템 필터 드라이버가 IRP_MJ_CREATE 요청을 처리하는 동안 파일 시스템 필터 드라이버는 FltInsertExtraCreateParameter 를 호출하여 ECP를 기존 ECP_LIST 연결할 수 있습니다. ECP_LIST 없는 경우 호출자는 FltAllocateExtraCreateParameterList 를 호출하여 ECP_LIST 만들어야 합니다. 이 경우 만들기 작업이 완료되면 I/O 관리자가 ECP_LIST 및 ECP 컨텍스트 구조를 자동으로 정리합니다. 이렇게 하면 필터 드라이버의 ECP가 재분석 지점의 처리 전반에 걸쳐 제대로 전파될 수 있습니다. 이 프로세스를 수행하려면 여러 IRP_MJ_CREATE 요청이 생성되어야 할 수 있습니다.

위에서 설명한 대로 FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 플래그를 Flags 매개 변수와 함께 사용하면 일반 페이징 가능한 풀이 할당됩니다. 그렇지 않으면 내부 lookaside 목록을 사용하여 페이징 가능한 풀이 할당됩니다.

ECP_LIST 구조체

ECP_LIST 운영 체제에서 선언하는 불투명 구조입니다. ECP_LIST ECP(추가 만들기 매개 변수) 항목 목록이 포함되어 있습니다.

FltAllocateExtraCreateParameterList 루틴을 사용하여 ECP_LIST 구조체에 대한 메모리를 할당해야 합니다. FltAllocateExtraCreateParameterList에 의해 할당된 메모리는 운영 체제에서 자동으로 해제되지 않습니다. FltFreeExtraCreateParameterList 루틴을 호출하여 명시적으로 할당을 취소해야 합니다. FltFreeExtraCreateParameterList가 호출되면 나머지 ECP 목록 요소가 자동으로 해제됩니다.

PECP_LIST 데이터 형식은 ECP_LIST 형식의 변수에 대한 포인터를 선언하는 데 사용됩니다.

Syntax

struct ECP_LIST {
  ;      // Reserved.
};

ECP_LIST 구조체는 Ntifs.h(Ntifs.h 포함)로 선언됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 이 루틴은 Windows Vista부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
IRQL <= APC_LEVEL

추가 정보

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx