다음을 통해 공유


풀 할당 및 무료 루틴

RDBSS는 풀 할당에 사용할 여러 루틴을 제공합니다. 일반적으로 이러한 루틴은 이러한 루틴을 직접 호출하는 것이 아니라 매크로를 사용하여 호출됩니다. 매크로는 소매 및 확인된 빌드 간의 차이를 자동으로 처리합니다.

확인된 빌드에서 이러한 루틴은 일반 커널 할당 및 사용 가능 루틴 주위에 래퍼를 추가하도록 설계되었습니다. 풀 할당 및 무료 루틴에 대한 이러한 래퍼는 추가 디버깅 정보를 제공하고 커널 풀 할당 및 무료 루틴을 호출하기 전에 다양한 종류의 검사 및 보호 작업을 수행하는 루틴 집합을 호출합니다. 그러나 이러한 기능은 현재 이러한 할당 및 무료 루틴에서 구현되지 않지만 향후 릴리스에서 추가될 수 있습니다.

무료 빌드에서 이러한 루틴은 커널 할당 및 무료 루틴인 ExAllocatePoolWithTagExFreePool에 대한 직접 호출이 됩니다.

다음 표에서는 RDBSS 풀 할당 및 무료 루틴을 나열합니다.

루틴에서 반환된 값 Description

_RxAllocatePoolWithTag

이 루틴은 메모리 문제를 catch하는 데 도움이 될 수 있는 블록의 시작 부분에 4 바이트 태그가 있는 풀에서 메모리를 할당합니다.

이 루틴을 직접 사용하는 대신 RxAllocatePoolWithTag 매크로를 호출하는 것이 좋습니다.

_RxCheckMemoryBlock

이 루틴은 메모리 블록에서 특수 RX_POOL_HEADER 헤더 서명을 확인합니다. 네트워크 미니 리디렉터 드라이버는 루틴을 사용하기 위해 할당된 메모리에 이 특수 서명 블록을 추가해야 합니다.

이 특수 헤더 블록이 구현되지 않았으므로 이 루틴을 사용하면 안 됩니다.

_RxFreePool

이 루틴은 메모리 풀을 해제합니다.

이 루틴을 직접 사용하는 대신 RxFreePool 매크로를 호출하는 것이 좋습니다.

ntrxdef.h 헤더 파일에 정의된 여러 매크로는 이러한 루틴을 호출합니다. 이전 표에 나열된 루틴을 직접 호출하는 대신 일반적으로 다음 매크로가 사용됩니다.

매크로 Description

RxAllocatePoolWithTag (type, size, tag)

확인된 빌드에서 이 매크로는 메모리 휴지통 인스턴스를 catch하는 데 도움이 될 수 있는 블록의 시작 부분에 4 바이트 태그가 있는 풀에서 메모리를 할당합니다.

소매 빌드에서 이 매크로는 ExAllocatePoolWithTag에 대한 직접 호출이 됩니다.

RxCheckMemoryBlock (ptr)

확인된 빌드에서 이 매크로는 메모리 블록에서 특수 RX_POOL_HEADER 헤더 서명을 확인합니다.

소매 빌드에서 이 매크로는 아무 작업도 수행하지 않습니다.

RxFreePool (ptr)

확인된 빌드에서 이 매크로는 메모리 풀을 해제합니다.

소매 빌드에서 이 매크로는 ExFreePool에 대한 직접 호출이 됩니다.