FsRtlAllocatePoolWithTag 매크로(ntifs.h)

FsRtlAllocatePoolWithTag 루틴은 풀 메모리를 할당합니다.

구문

void FsRtlAllocatePoolWithTag(
  [in]  PoolType,
  [in]  NumberOfBytes,
  [in]  Tag
);

매개 변수

[in] PoolType

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

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

NonPagedPoolMustSucceedNonPagedPoolCacheAlignedMustS 풀 형식은 사용되지 않으므로 더 이상 사용하지 않아야 합니다.

[in] NumberOfBytes

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

[in] Tag

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

반환 값

없음

설명

풀 할당 오류가 발생하면 FsRtlAllocatePoolWithTag 에서 STATUS_INSUFFICIENT_RESOURCES 예외가 발생합니다. 이 풀 할당 오류가 발생하는 경우 제어하려면 드라이버는 try-except 또는 try-finally 문에서 FsRtlAllocatePoolWithTag에 대한 호출을 래핑해야 합니다.

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

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

FsRtlAllocatePoolWithTag가 할당하는 메모리는 초기화되지 않습니다. 커널 모드 드라이버는 사용자 모드 소프트웨어에 표시하려면 먼저 이 메모리를 0으로 설정해야 합니다(잠재적으로 권한 있는 콘텐츠가 누출되지 않도록 방지).

FsRtlAllocatePoolWithTag의 호출자는 IRQL <= DISPATCH_LEVEL 실행되어야 합니다. DISPATCH_LEVEL 호출자는 NonPagedXxxPoolType을 지정해야 합니다. 그렇지 않으면 호출자가 IRQL <= APC_LEVEL 실행 중이어야 합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL(설명 섹션 참조)

추가 정보

ExAllocatePoolWithTag

ExFreePool