다음을 통해 공유


ExAllocatePoolQuotaZero 함수(wdm.h)

주의

Microsoft는 Windows 10 버전 1909에서 할당이 0이 되지 않을 수 있는 ExAllocatePoolQuotaZero 문제를 알고 있습니다. 이 문제는 2020년 12월 16일 Windows 10 버전 2004용 Windows 10, 버전 2004 및 Enterprise WDK(EWDK)의 보안 새로 고침에서 해결되었습니다. 최신 WDK 다운로드에 대한 자세한 내용은 WDK(Windows 드라이버 키트)다운로드를 참조하세요.

이 루틴은 ExAllocatePoolWithQuotaTag대한 래퍼 및 권장 대체 옵션입니다.

ExAllocatePoolQuotaZero는 지정된 형식의 풀 메모리를 할당하고 할당된 블록에 대한 포인터를 반환합니다. 0이 할당된 메모리를 초기화하지는 ExAllocatePoolWithQuotaTag 동일합니다. 원하지 않는 경우 ExAllocatePoolQuotaUninitialized 대신 사용합니다.

통사론

PVOID ExAllocatePoolQuotaZero(
  __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(공백)의 값이어야 합니다(타일). 각 할당 코드 경로는 디버거와 검증 도구가 코드 경로를 식별하는 데 도움이 되도록 고유한 풀 태그를 사용해야 합니다.

반환 값

ExAllocatePoolQuotaZero는 할당된 풀에 대한 포인터를 반환합니다.

요청을 충족할 수 없는 경우 exAllocatePoolQuotaZero는 POOL_QUOTA_FAIL_INSTEAD_OF_RAISE 지정하지 않는 한 예외를 발생합니다. 성능상의 이유로 POOL_QUOTA_FAIL_INSTEAD_OF_RAISE 사용하는 것이 좋습니다.

발언

Windows 10 버전 2004 이전 버전의 Windows에서 실행하려면 드라이버가 이 함수를 호출하기 전에 POOL_ZERO_DOWN_LEVEL_SUPPORT 정의하고 ExInitializeDriverRuntime 호출해야 합니다.

이 루틴은 원래 I/O 요청을 수행한 프로세스의 컨텍스트에서 요청을 충족하기 위해 메모리를 할당하는 최상위 드라이버에 의해 호출됩니다. 하위 수준 드라이버는 ExAllocatePoolZero 대신 호출합니다.

추가 지침은 ExAllocatePoolWithQuotaTag 설명 섹션을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 버전 2004용 WDK가 필요합니다. Windows 7 이상 버전의 Windows 운영 체제를 대상으로 합니다.
대상 플랫폼 보편적
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL(주의 섹션 참조)
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs, SpNoWait, StorPortStartIo

참고 항목

ExAllocatePoolQuotaUninitialized