FltAllocatePoolAlignedWithTag 함수(fltkernel.h)
FltAllocatePoolAlignedWithTag 는 캐시되지 않은 I/O 작업에 사용할 디바이스 정렬 버퍼를 할당합니다.
구문
PVOID FLTAPI FltAllocatePoolAlignedWithTag(
[in] PFLT_INSTANCE Instance,
[in] POOL_TYPE PoolType,
[in] SIZE_T NumberOfBytes,
[in] ULONG Tag
);
매개 변수
[in] Instance
볼륨에 연결된 호출자 소유 미니필터 드라이버 instance 대한 불투명 instance 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
[in] PoolType
할당할 풀의 유형입니다. 다음 중 하나
NonPagedPool
PagedPool
NonPagedPoolCacheAligned
PagedPoolCacheAligned
사용 가능한 풀 메모리 유형에 대한 설명은 POOL_TYPE 참조하세요.
[in] NumberOfBytes
할당할 바이트 수입니다. 이 매개 변수는 필수이며 0일 수 있습니다.
[in] Tag
할당된 메모리의 풀 태그를 지정합니다. 드라이버는 일반적으로 풀 태그를 작은따옴표(예: 'abcd')로 구분된 1~4개의 7비트 ASCII 문자 문자열로 지정합니다. 이 매개 변수는 필수이며 0일 수 없습니다.
반환 값
요청을 충족하는 데 사용 가능한 풀이 충분하지 않은 경우 FltAllocatePoolAlignedWithTag 는 NULL 포인터를 반환합니다. 그렇지 않으면 FltAllocatePoolAlignedWithTag 는 새로 할당된 버퍼에 대한 포인터를 반환합니다.
설명
FltAllocatePoolAlignedWithTag 는 지정된 볼륨에 대한 기본 디바이스에 따라 정렬된 버퍼를 할당합니다. 이러한 디바이스 정렬 버퍼는 캐시되지 않은 I/O에 필요합니다. 캐시된 I/O에도 사용할 수 있습니다. 따라서 FltReadFile 및 FltWriteFile과 같이 캐시되지 않은 I/O를 수행하는 루틴을 호출할 때 미니필터 드라이버는 ExAllocatePoolWithTag 대신 FltAllocatePoolAlignedWithTag를 호출해야 합니다.
호출자가 NumberOfBytes 매개 변수에 대해 0 값을 지정하는 경우 FltAllocatePoolAlignedWithTag 는 맞춤 요구 사항을 충족하는 가장 적은 양의 메모리를 할당합니다.
시스템은 Tag 매개 변수에 지정된 풀 태그를 할당된 버퍼와 연결합니다. Windows 디버거(WinDbg)와 같은 프로그래밍 도구는 할당된 각 버퍼와 연결된 풀 태그를 표시할 수 있습니다. 풀 태그의 값은 일반적으로 역순으로 표시됩니다. 예를 들어 호출자가 Tag 매개 변수의 값으로 'Fred'를 전달하는 경우 풀이 덤프되거나 디버거에서 풀 사용량을 추적할 때 이 값은 'derF'로 표시됩니다.
메모리 관리에 대한 자세한 내용은 메모리 관리를 참조하세요.
FltAllocatePoolAlignedWithTag가 할당하는 버퍼가 더 이상 필요하지 않은 경우 호출자는 FltFreePoolAlignedWithTag를 호출하여 버퍼를 해제할 책임이 있습니다.
FltAllocatePoolAlignedWithTag의 호출자는 NonPagedXxxPoolType이 지정된 경우에만 IRQL DISPATCH_LEVEL 실행할 수 있습니다. 그렇지 않으면 호출자가 IRQL <= APC_LEVEL 실행되어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
IRQL | <= APC_LEVEL(설명 섹션 참조) |