다음을 통해 공유


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

볼륨에 연결된 호출자 소유 미니 필터 드라이버 인스턴스에 대한 불투명 인스턴스 포인터입니다. 이 매개 변수는 필수이며 NULL 수 없습니다.

[in] PoolType

할당할 풀의 유형입니다. 다음 중 하나입니다.

NonPagedPool

PagedPool

NonPagedPoolCacheAligned

pagedPoolCacheAligned

사용 가능한 풀 메모리 유형에 대한 설명은 POOL_TYPE 참조하세요.

[in] NumberOfBytes

할당할 바이트 수입니다. 이 매개 변수는 필수이며 0일 수 있습니다.

[in] Tag

할당된 메모리의 풀 태그를 지정합니다. 드라이버는 일반적으로 풀 태그를 작은따옴표(예: 'abcd')로 구분된 1~4개의 7비트 ASCII 문자 문자열로 지정합니다. 이 매개 변수는 필수이며 0일 수 없습니다.

반환 값

요청을 충족할 수 있는 무료 풀이 충분하지 않은 경우 FltAllocatePoolAlignedWithTagNULL 포인터를 반환합니다. 그렇지 않으면 FltAllocatePoolAlignedWithTag 새로 할당된 버퍼에 대한 포인터를 반환합니다.

발언

FltAllocatePoolAlignedWithTag 지정된 볼륨에 대한 기본 디바이스에 따라 정렬된 버퍼를 할당합니다. 이러한 디바이스 맞춤 버퍼는 캐시되지 않은 I/O에 필요합니다. (캐시된 I/O에도 사용할 수 있습니다.) 따라서 FltReadFile 및 fltWriteFile 같은 캐시되지 않은 I/O를 수행하는 루틴을 호출하는 경우 미니 필터 드라이버는 ExAllocatePoolWithTag대신 FltAllocatePoolAlignedWithTag 호출해야 합니다.

호출자가 NumberOfBytes 매개 변수에 대해 0 값을 지정하는 경우 FltAllocatePoolAlignedWithTag 맞춤 요구 사항을 충족하는 가장 작은 양의 메모리를 할당합니다.

시스템은 Tag 매개 변수로 지정된 풀 태그를 할당된 버퍼와 연결합니다. Windows 디버거(WinDbg)와 같은 프로그래밍 도구는 할당된 각 버퍼와 연결된 풀 태그를 표시할 수 있습니다. 풀 태그의 값은 일반적으로 역순으로 표시됩니다. 예를 들어 호출자가 'Fred'를 Tag 매개 변수의 값으로 전달하는 경우 풀이 덤프되거나 디버거에서 풀 사용량을 추적할 때 이 값은 'derF'로 표시됩니다.

메모리 관리에 대한 자세한 내용은 메모리 관리참조하세요.

FltAllocatePoolAlignedWithTag 할당하는 버퍼가 더 이상 필요하지 않은 경우 호출자는 FltFreePoolAlignedWithTag호출하여 버퍼를 해제할 책임이 있습니다.

FltAllocatePoolAlignedWithTag 호출자는 NonPagedXxxPoolType 지정된 경우에만 IRQL DISPATCH_LEVEL 실행할 수 있습니다. 그렇지 않으면 호출자가 IRQL <= APC_LEVEL 실행되어야 합니다.

요구 사항

요구
대상 플랫폼 보편적
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
IRQL <= APC_LEVEL(주의 섹션 참조)

참고 항목

exAllocatePoolWithTag

FltFreePoolAlignedWithTag

fltReadFile

fltWriteFile