풀 할당 및 무료 루틴
RDBSS는 풀 할당에 사용할 여러 루틴을 제공합니다. 일반적으로 이러한 루틴은 이러한 루틴을 직접 호출하는 것이 아니라 매크로를 사용하여 호출됩니다. 매크로는 소매 및 확인된 빌드 간의 차이를 자동으로 처리합니다.
확인된 빌드에서 이러한 루틴은 일반 커널 할당 및 사용 가능 루틴 주위에 래퍼를 추가하도록 설계되었습니다. 풀 할당 및 무료 루틴에 대한 이러한 래퍼는 추가 디버깅 정보를 제공하고 커널 풀 할당 및 무료 루틴을 호출하기 전에 다양한 종류의 검사 및 보호 작업을 수행하는 루틴 집합을 호출합니다. 그러나 이러한 기능은 현재 이러한 할당 및 무료 루틴에서 구현되지 않지만 향후 릴리스에서 추가될 수 있습니다.
무료 빌드에서 이러한 루틴은 커널 할당 및 무료 루틴인 ExAllocatePoolWithTag 및 ExFreePool에 대한 직접 호출이 됩니다.
다음 표에서는 RDBSS 풀 할당 및 무료 루틴을 나열합니다.
루틴에서 반환된 값 | Description |
---|---|
이 루틴은 메모리 문제를 catch하는 데 도움이 될 수 있는 블록의 시작 부분에 4 바이트 태그가 있는 풀에서 메모리를 할당합니다. 이 루틴을 직접 사용하는 대신 RxAllocatePoolWithTag 매크로를 호출하는 것이 좋습니다. |
|
이 루틴은 메모리 블록에서 특수 RX_POOL_HEADER 헤더 서명을 확인합니다. 네트워크 미니 리디렉터 드라이버는 루틴을 사용하기 위해 할당된 메모리에 이 특수 서명 블록을 추가해야 합니다. 이 특수 헤더 블록이 구현되지 않았으므로 이 루틴을 사용하면 안 됩니다. |
|
이 루틴은 메모리 풀을 해제합니다. 이 루틴을 직접 사용하는 대신 RxFreePool 매크로를 호출하는 것이 좋습니다. |
ntrxdef.h 헤더 파일에 정의된 여러 매크로는 이러한 루틴을 호출합니다. 이전 표에 나열된 루틴을 직접 호출하는 대신 일반적으로 다음 매크로가 사용됩니다.
매크로 | Description |
---|---|
RxAllocatePoolWithTag (type, size, tag) |
확인된 빌드에서 이 매크로는 메모리 휴지통 인스턴스를 catch하는 데 도움이 될 수 있는 블록의 시작 부분에 4 바이트 태그가 있는 풀에서 메모리를 할당합니다. 소매 빌드에서 이 매크로는 ExAllocatePoolWithTag에 대한 직접 호출이 됩니다. |
RxCheckMemoryBlock (ptr) |
확인된 빌드에서 이 매크로는 메모리 블록에서 특수 RX_POOL_HEADER 헤더 서명을 확인합니다. 소매 빌드에서 이 매크로는 아무 작업도 수행하지 않습니다. |
RxFreePool (ptr) |
확인된 빌드에서 이 매크로는 메모리 풀을 해제합니다. 소매 빌드에서 이 매크로는 ExFreePool에 대한 직접 호출이 됩니다. |