다음을 통해 공유


POOL_FLAGS

필수 및 선택적 특성과 함께 풀 메모리 유형을 지정하는 ULONG64 형식 값입니다. 비트 단위 OR를 사용하여 여러 플래그 값을 결합할 수 있습니다.

//
// POOL_FLAG values
//
// Low 32-bits of ULONG64 are for required parameters (allocation fails if they
// cannot be satisfied).
// High 32-bits of ULONG64 is for optional parameters (allocation succeeds if
// they cannot be satisfied or are unrecognized).
//

#define POOL_FLAG_REQUIRED_START          0x0000000000000001UI64
#define POOL_FLAG_USE_QUOTA               0x0000000000000001UI64     // Charge quota
#define POOL_FLAG_UNINITIALIZED           0x0000000000000002UI64     // Don't zero-initialize allocation
#define POOL_FLAG_SESSION                 0x0000000000000004UI64     // Use session specific pool
#define POOL_FLAG_CACHE_ALIGNED           0x0000000000000008UI64     // Cache aligned allocation
#define POOL_FLAG_RESERVED1               0x0000000000000010UI64     // Reserved for system use
#define POOL_FLAG_RAISE_ON_FAILURE        0x0000000000000020UI64     // Raise exception on failure
#define POOL_FLAG_NON_PAGED               0x0000000000000040UI64     // Non paged pool NX
#define POOL_FLAG_NON_PAGED_EXECUTE       0x0000000000000080UI64     // Non paged pool executable
#define POOL_FLAG_PAGED                   0x0000000000000100UI64     // Paged pool
#define POOL_FLAG_RESERVED2               0x0000000000000200UI64     // Reserved for system use
#define POOL_FLAG_RESERVED3               0x0000000000000400UI64     // Reserved for system use
#define POOL_FLAG_REQUIRED_END            0x0000000080000000UI64
#define POOL_FLAG_OPTIONAL_START          0x0000000100000000UI64
#define POOL_FLAG_SPECIAL_POOL            0x0000000100000000UI64     // Make special pool allocation
#define POOL_FLAG_OPTIONAL_END            0x8000000000000000UI64

필수 플래그

풀 할당자가 필수 플래그를 인식하고 충족해야 합니다. 할당자가 플래그를 인식하지 못하거나 필요한 모든 플래그를 충족하는 할당을 만들 수 없는 경우 할당이 실패합니다.

속성 Description
POOL_FLAG_USE_QUOTA 이 플래그는 원래 I/O 요청을 수행한 프로세스의 컨텍스트에서 요청을 충족하기 위해 메모리를 할당하는 최상위 드라이버에 의해 전달됩니다. 하위 수준 드라이버는 이 플래그를 지정할 필요가 없습니다.
POOL_FLAG_UNINITIALIZED 할당을 초기화되지 않은 상태로 둡니다. 할당의 내용은 확정되지 않습니다. 드라이버는 초기화되지 않은 메모리를 신뢰할 수 없는 대상(사용자 모드, 네트워크 등)에 복사하지 않도록 매우 주의해야 합니다.
POOL_FLAG_SESSION 운영 체제용으로 예약되어 있습니다.
POOL_FLAG_CACHE_ALIGNED 캐시는 풀 할당을 맞춥니다. 경고: 이 플래그는 최상의 노력으로 처리되며 프로그램 정확성을 위해 캐시 정렬 할당이 필요한 경우 사용하지 않아야 합니다.
POOL_FLAG_RESERVED1 내부용으로 예약된 속성입니다.
POOL_FLAG_RAISE_ON_FAILURE 할당을 충족할 수 없는 경우 예외를 발생합니다.
POOL_FLAG_NON_PAGED 페이징이 아닌 풀에서 할당합니다.
POOL_FLAG_NON_PAGED_EXECUTE 페이징이 아닌 실행 파일 풀에서 할당합니다.
POOL_FLAG_PAGED 페이징된 풀에서 할당합니다. x86에서 실행 가능하며 다른 모든 플랫폼에서는 실행 불가능합니다.
POOL_FLAG_RESERVED2 내부용으로 예약된 속성입니다.
POOL_FLAG_RESERVED3 내부용으로 예약된 속성입니다.

선택적 플래그

선택적 플래그는 풀 할당자에 의해 기회적으로 충족됩니다. 할당자가 선택적 플래그를 인식하지 못하면 무시됩니다. 할당자가 선택적 플래그를 충족할 수 없는 경우 특정 플래그의 의미 체계에 따라 성공할 수도 있고 성공하지 못할 수도 있습니다.

속성 Description
POOL_FLAG_SPECIAL_POOL 특수 풀에서 할당합니다(디버깅에 사용됨). 특수 풀을 사용할 수 없는 경우 할당자는 일반 풀을 사용하려고 시도합니다.

요구 사항

헤더: wdm.h(Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h 포함)

참고 항목

ExAllocatePool2