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 목록 구조에 대한 포인터를 받습니다. 루틴이 충분한 풀을 할당하지 못한 경우 *EcpList NULL 루틴은 상태 코드 STATUS_INSUFFICIENT_RESOURCES 반환합니다.
반환 값
FltAllocateExtraCreateParameterList 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 묘사 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | FltAllocateExtraCreateParameterList ECP 목록 구조에 충분한 메모리를 할당할 수 없습니다. 이 경우 *EcpList NULL . |
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 루틴을 호출하여 명시적으로 할당을 취소해야 합니다. 나머지 ECP 목록 요소는 FltFreeExtraCreateParameterList 호출될 때 자동으로 해제됩니다.
PECP_LIST 데이터 형식은 ECP_LIST 형식의 변수에 대한 포인터를 선언하는 데 사용됩니다.
통사론
struct ECP_LIST {
; // Reserved.
};
ECP_LIST 구조체는 Ntifs.h(Ntifs.h 포함)로 선언됩니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | 이 루틴은 Windows Vista부터 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
IRQL | <= APC_LEVEL |
참고 항목
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterFromLookasideList