FsRtlAllocateExtraCreateParameter 함수(ntifs.h)
FsRtlAllocateExtraCreateParameter 루틴은 ECP(추가 만들기 매개 변수) 컨텍스트 구조에 대한 메모리를 할당하고 해당 구조에 대한 포인터를 생성합니다.
구문
NTSTATUS FsRtlAllocateExtraCreateParameter(
[in] LPCGUID EcpType,
[in] ULONG SizeOfContext,
[in] FSRTL_ALLOCATE_ECP_FLAGS Flags,
[in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
[in] ULONG PoolTag,
[out] PVOID *EcpContext
);
매개 변수
[in] EcpType
ECP 컨텍스트 구조의 형식을 나타내는 GUID에 대한 포인터입니다. 자세한 내용은 드라이버에서 GUID 사용을 참조하세요.
[in] SizeOfContext
컨텍스트 구조의 크기(바이트)입니다.
[in] Flags
풀 할당 옵션을 정의합니다. 다음은 나열된 플래그 값 중 하나 이상이 Bit OR 연산을 사용하여 Flags 매개 변수와 결합될 때 풀을 할당하는 방법을 설명합니다.
FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL - 페이징되지 않은 풀이 할당됩니다. 이 플래그 값을 사용하지 않으면 페이징된 풀이 할당됩니다.
FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA - FsRtlAllocateExtraCreateParameter 에 의해 할당된 모든 풀은 현재 프로세스의 메모리 할당량에 대해 요금이 청구됩니다.
둘 이상의 플래그를 사용하는 경우 사용된 플래그 값과 관련된 모든 효과가 발생합니다.
[in, optional] CleanupCallback
PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK 형식의 필터 정의 정리 콜백 루틴에 대한 선택적 포인터입니다. 정리 콜백 루틴은 ECP 구조( FsRtlAllocateExtraCreateParameter 루틴에 의해 생성됨)가 삭제되면 호출됩니다. 정리 콜백 루틴을 적용할 수 없는 경우 이 매개 변수를 NULL 로 설정합니다.
[in] PoolTag
할당된 메모리의 풀 태그를 지정합니다. 자세한 내용은 ExAllocatePoolWithTag의 Tag 매개 변수를 참조하세요.
[out] EcpContext
할당된 ECP 컨텍스트 구조에 대한 포인터를 받습니다. 루틴이 충분한 풀을 할당하지 못한 경우 EcpContext 에서 가리키는 값은 NULL 이고 FsRtlAllocateExtraCreateParameter 는 상태 코드 STATUS_INSUFFICIENT_RESOURCES 반환합니다.
반환 값
FltAllocateExtraCreateParameter 는 다음 중 하나와 같은 상태 코드를 반환합니다.
| 반환 코드 | 설명 |
|---|---|
| STATUS_INSUFFICIENT_RESOURCES | FsRtlAllocateExtraCreateParameter 가 ECP 구조에 충분한 메모리를 할당할 수 없습니다. 이 경우 EcpContext 는 NULL 입니다. |
| STATUS_SUCCESS | ECP 구조가 성공적으로 할당되었습니다. 이 경우 할당된 구조체에 대한 포인터가 EcpContext 매개 변수에 반환됩니다. |
설명
기본적으로 FsRtlAllocateExtraCreateParameter 루틴은 ECP 컨텍스트 구조에 대해 페이징된 메모리 풀을 할당합니다. Flags 매개 변수에 설명된 대로 FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL 비트 마스크를 사용하는 경우 페이징되지 않은 메모리 풀이 할당됩니다. 이 풀이 할당되고 ECP 컨텍스트 구조가 초기화된 후 FltInsertExtraCreateParameter 루틴을 사용하여 ECP 컨텍스트 구조(ECP 목록 요소)를 ECP 목록 구조(ECP_LIST)에 삽입합니다.
호출자가 ECP_LIST 할당하고 하나 이상의 ECP가 IoCreateFileEx 호출에 사용되는 경우 이전 설명이 정확합니다. 이 경우 시스템은 ECP를 해제하지 않으므로 호출자는 동일한 ECP 집합으로 IoCreateFileEx 를 여러 차례 호출할 수 있습니다. 그러나 파일 시스템 또는 파일 시스템 필터 드라이버가 IRP_MJ_CREATE 요청을 처리하는 동안 기존 또는 새로 만든 ECP_LIST ECP를 연결하는 경우 IRP가 완료되면 이 ECP가 자동으로 정리됩니다. 따라서 필터 드라이버는 동적으로 추가되는 ECP를 정리할 필요가 없습니다. 이렇게 하면 필터 드라이버의 ECP가 재분석 지점 간에 제대로 전파될 수 있습니다. 이 프로세스는 여러 IRP_MJ_CREATE 요청을 생성해야 할 수 있습니다.
요구 사항
| 지원되는 최소 클라이언트 | FsRtlAllocateExtraCreateParameter 루틴은 Windows Vista부터 사용할 수 있습니다. |
| 대상 플랫폼 | 유니버설 |
| 헤더 | ntifs.h(Ntifs.h 포함) |
| 라이브러리 | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |
참조
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
피드백
다음에 대한 사용자 의견 제출 및 보기