FltAllocateExtraCreateParameterFromLookasideList 함수(fltkernel.h)
FltAllocateExtraCreateParameterFromLookasideList 루틴은 ECP(추가 만들기 매개 변수) 컨텍스트 구조에 대해 지정된 lookaside 목록의 메모리 풀을 할당하고 해당 구조체에 대한 포인터를 생성합니다.
구문
NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
[in] PFLT_FILTER Filter,
[in] LPCGUID EcpType,
[in] ULONG SizeOfContext,
[in] FSRTL_ALLOCATE_ECP_FLAGS Flags,
[in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
[in, out] PVOID LookasideList,
[out] PVOID *EcpContext
);
매개 변수
[in] Filter
미니필터 드라이버에 대한 불투명 필터 포인터입니다. 이 포인터는 미니필터 드라이버를 고유하게 식별하고 미니필터 드라이버가 로드되는 한 일정하게 유지됩니다.
[in] EcpType
ECP 컨텍스트 구조의 형식을 나타내는 GUID에 대한 포인터입니다. 자세한 내용은 드라이버에서 GUID 사용을 참조하세요.
[in] SizeOfContext
ECP 컨텍스트 구조의 크기(바이트)입니다.
[in] Flags
풀 할당 옵션을 정의합니다. SizeOfContext 매개 변수의 값이 지정된 lookaside 목록의 크기(바이트)보다 큰 경우 ECP 컨텍스트 구조는 lookaside 목록 대신 시스템 풀에서 할당됩니다. 이 경우 Flags 매개 변수에 FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 비트 플래그 값이 포함된 경우 루틴에 의해 할당된 시스템 풀은 현재 프로세스의 메모리 할당량에 대해 요금이 청구됩니다. 자세한 내용은 FltAllocateExtraCreateParameter의 Flags 매개 변수를 참조하세요. ECP 컨텍스트 구조에 대한 메모리가 lookaside 목록에서 할당되는 일반적인 경우 FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 비트 플래그는 루틴에서 사용되지 않습니다.
[in, optional] CleanupCallback
PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK 형식의 미니필터 정의 정리 콜백 루틴에 대한 선택적 포인터입니다. 정리 콜백 루틴은 ECP 컨텍스트 구조가 삭제되면 호출됩니다. 정리 콜백 루틴을 적용할 수 없는 경우 이 매개 변수를 NULL 로 설정합니다.
[in, out] LookasideList
ECP 컨텍스트 구조의 경우 에서 풀을 할당하려고 시도하는 초기화된 lookaside 목록에 대한 포인터입니다. lookaside 목록을 초기화하려면 FltInitExtraCreateParameterLookasideList 루틴을 사용합니다.
[out] EcpContext
할당된 ECP 컨텍스트 구조에 대한 포인터를 받습니다. 루틴이 ECP 컨텍스트 구조에 충분한 풀을 할당하지 못한 경우 EcpContext는 NULL이 되고 루틴은 상태 코드 STATUS_INSUFFICIENT_RESOURCES 반환합니다.
반환 값
FltAllocateExtraCreateParameterFromLookasideList 루틴은 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | FltAllocateExtraCreateParameterFromLookasideList 루틴이 ECP 컨텍스트 구조에 충분한 메모리를 할당할 수 없습니다. 이 경우 EcpContext 는 NULL이 됩니다. |
STATUS_SUCCESS | ECP 컨텍스트 구조가 성공적으로 할당되었습니다. 이 경우 할당된 구조체에 대한 포인터는 EcpContext 매개 변수에 의해 반환됩니다. |
설명
이 루틴은 Windows Vista부터 사용할 수 있습니다.
FltAllocateExtraCreateParameterFromLookasideList 루틴은 지정된 초기화된 페이징된 페이지 또는 비페이징된 lookaside 목록에서 ECP 컨텍스트 구조에 대한 메모리 풀을 할당합니다. 그러나 SIZEOfContext 매개 변수로 정의된 ECP 컨텍스트 구조의 크기가 lookaside 목록보다 크면 루틴은 페이징된 시스템 풀 또는 페이징되지 않은 시스템 풀의 메모리를 유사하게 할당합니다.
FltInitExtraCreateParameterLookasideList 루틴을 사용하여 페이징되거나 페이징되지 않은 풀 lookaside 목록을 초기화합니다. FltAllocateExtraCreateParameterFromLookasideList 루틴을 사용하여 lookaside 목록에서 ECP 컨텍스트 구조를 할당하고 FltFreeExtraCreateParameter 루틴을 사용하여 ECP 컨텍스트 구조를 할당 취소합니다.
FltDeleteExtraCreateParameterLookasideList 루틴을 사용하여 lookaside 목록을 해제합니다.
드라이버는 언로드하기 전에 만든 모든 ECP 컨텍스트 구조 및 lookaside 목록을 해제해야 합니다. 그러나 파일 시스템 또는 파일 시스템 필터 드라이버가 IRP_MJ_CREATE 요청을 처리하는 동안 기존 또는 새로 만든 ECP_LIST ECP를 연결하는 경우 IRP가 완료되면 이 ECP가 자동으로 정리됩니다. 따라서 필터 드라이버는 동적으로 추가되는 ECP를 클린 필요가 없습니다. 이렇게 하면 여러 IRP_MJ_CREATE 요청을 생성해야 할 수 있는 프로세스인 재분석 지점에 필터 드라이버의 ECP가 제대로 전파될 수 있습니다.
드라이버에서 lookaside 목록을 사용하는 방법에 대한 자세한 내용은 Lookaside Lists 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
IRQL | <= APC_LEVEL |
추가 정보
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterList
FltDeleteExtraCreateParameterLookasideList
FltFreeExtraCreateParameterList