FsRtlAllocatePoolWithQuotaTag 매크로(ntifs.h)
FsRtlAllocatePoolWithQuotaTag 루틴은 풀 메모리를 할당하여 현재 프로세스에 대한 할당량을 청구합니다.
구문
void FsRtlAllocatePoolWithQuotaTag(
[in] PoolType,
[in] NumberOfBytes,
[in] Tag
);
매개 변수
[in] PoolType
할당할 풀의 유형입니다. 다음 중 하나
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
NonPagedPoolMustSucceed 및 NonPagedPoolCacheAlignedMustS 풀 형식은 사용되지 않으므로 더 이상 사용하지 않아야 합니다.
[in] NumberOfBytes
할당할 바이트 수입니다.
[in] Tag
할당된 메모리의 풀 태그를 지정합니다. 드라이버는 일반적으로 풀 태그를 작은따옴표(예: 'abcd')로 구분된 1~4개의 7비트 ASCII 문자 문자열로 지정합니다. 이 매개 변수는 필수이며 0일 수 없습니다.
반환 값
없음
설명
풀 할당 오류가 발생하면 FsRtlAllocatePoolWithQuotaTag 에서 STATUS_INSUFFICIENT_RESOURCES 예외가 발생합니다. 이 풀 할당 오류가 발생하는 경우 제어하려면 드라이버는 try-except 또는 try-finally 문에서 FsRtlAllocatePoolWithQuotaTag에 대한 호출을 래핑해야 합니다.
시스템은 Tag 매개 변수에 지정된 풀 태그를 할당된 버퍼와 연결합니다. Windows 디버거(WinDbg)와 같은 프로그래밍 도구는 할당된 각 버퍼와 연결된 풀 태그를 표시할 수 있습니다. 풀 태그의 값은 일반적으로 역순으로 표시됩니다. 예를 들어 호출자가 Tag 매개 변수의 값으로 'Fred'를 전달하는 경우 풀이 덤프되거나 디버거에서 풀 사용량을 추적할 때 이 값은 'derF'로 표시됩니다.
메모리 관리에 대한 자세한 내용은 메모리 관리를 참조하세요.
FsRtlAllocatePoolWithQuotaTag가 할당하는 메모리는 초기화되지 않습니다. 커널 모드 드라이버는 사용자 모드 소프트웨어에 표시하려면 먼저 이 메모리를 0으로 설정해야 합니다(잠재적으로 권한 있는 콘텐츠가 누출되지 않도록 방지).
FsRtlAllocatePoolWithQuotaTag 호출자는 IRQL <= DISPATCH_LEVEL 실행 중이어야 합니다. DISPATCH_LEVEL 호출자는 NonPaged****XxxPoolType을 지정해야 합니다. 그렇지 않으면 호출자가 IRQL < DISPATCH_LEVEL 실행 중이어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL(설명 섹션 참조) |