ExAllocatePoolQuotaUninitialized 함수(wdm.h)
ExAllocatePoolQuotaUninitialized 루틴은 풀 메모리를 할당하여 현재 프로세스에 대한 할당량을 청구합니다.
이 루틴은 ExAllocatePoolWithQuotaTag에 대한 래퍼 및 대체 옵션입니다. 기능에는 차이가 없습니다.
구문
PVOID ExAllocatePoolQuotaUninitialized(
__drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
SIZE_T NumberOfBytes,
ULONG Tag
);
매개 변수
PoolType
할당할 풀 메모리의 유형입니다. 사용 가능한 풀 메모리 유형에 대한 설명은 POOL_TYPE 참조하세요.
마찬가지로 이 값을 POOL_COLD_ALLOCATION 플래그(에 정의wdm.h
됨)를 커널에 대한 힌트로 비트 ORing하여 PoolType 값을 수정하여 빠르게 페이징될 가능성이 있는 페이지의 메모리를 할당할 수 있습니다. 상주 풀 메모리의 양을 최대한 줄이려면 이러한 할당을 자주 참조해서는 안 됩니다. POOL_COLD_ALLOCATION 플래그는 권고일 뿐입니다.
NumberOfBytes
할당할 바이트 수입니다.
Tag
할당된 메모리에 사용할 풀 태그입니다. 풀 태그를 작은따옴표(예 Tag1
: )로 구분된 1~4자의 0이 아닌 문자 리터럴로 지정합니다. 문자열은 일반적으로 역순으로 지정됩니다(예: 1gaT
). 태그의 각 ASCII 문자는 0x7E(타일)에 대한 범위 0x20(공간)의 값이어야 합니다. 각 할당 코드 경로는 디버거와 검증 도구가 코드 경로를 식별하는 데 도움이 되는 고유한 풀 태그를 사용해야 합니다.
반환 값
ExAllocatePoolQuotaUninitialized 는 할당된 풀에 대한 포인터를 반환합니다.
요청을 충족할 수 없는 경우 exAllocatePoolQuotaUninitialized 는 POOL_QUOTA_FAIL_INSTEAD_OF_RAISE 지정하지 않는 한 예외를 발생합니다. 성능상의 이유로 POOL_QUOTA_FAIL_INSTEAD_OF_RAISE 사용하는 것이 좋습니다.
설명
이 루틴은 원래 I/O 요청을 수행한 프로세스의 컨텍스트에서 요청을 충족하기 위해 메모리를 할당하는 최상위 드라이버에 의해 호출됩니다. 하위 수준 드라이버는 ExAllocatePoolUninitialized 를 대신 호출합니다.
ExAllocatePoolQuotaUninitialized가 할당한 메모리는 초기화되지 않습니다. 커널 모드 드라이버는 사용자 모드 소프트웨어에 표시하려면 먼저 이 메모리를 0으로 설정해야 합니다(잠재적으로 권한 있는 콘텐츠가 누출되지 않도록 방지).
추가 지침은 ExAllocatePoolWithQuotaTag의 설명 섹션을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 버전 2004에는 WDK가 필요합니다. Windows 운영 체제의 Windows 7 이상 버전을 대상으로 합니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL(설명 섹션 참조) |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs, SpNoWait, StorPortStartIo |