다음을 통해 공유


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

추가 정보

ExAllocatePoolQuotaZero

ExAllocatePoolWithQuotaTag