C30029
경고 C30029: 금지된 Mem 할당 NoType(BANNED_MEM_ALLOCATION_NOTYPE)
예제 출력: Warning: Calling a memory allocating function which requests executable memory
이 경고는 금지된 함수가 사용되고 있으며 보다 강력하거나 안전한 대체 기능을 사용하고 있음을 나타냅니다. 이 특정 오류는 실행 파일 비페이지 풀만 할당하는 API의 사용을 나타냅니다. 실행 가능한 메모리가 필요한 경우에만 사용해야 합니다. 이에 대한 자세한 내용은 NX(실행 안 됨) 비페이지 풀 을 참조하세요. 이 동작을 변경하는 매개 변수를 제공할 수 없습니다. 이 문제를 해결하는 유일한 방법은 실행 불가능한 비페이지 풀 메모리를 할당할 수 있는 대체 함수를 사용하는 것입니다. 이 오류에서 다루는 모든 금지된 함수 목록과 권장되는 대체 함수는 다음 예제 뒤에 나와 있습니다.
예
다음 코드는 경고 C30029를 생성합니다.
MmMapIoSpace( PhysicalAddress,
numberOfBytes,
MmNonCached);
다음 코드는 이 경고를 방지합니다.
MmMapIoSpaceEx( PhysicalAddress,
numberOfBytes,
PAGE_NOCACHE | PAGE_READWRITE);
금지된 함수
| 금지된 API | 대체(들) | 근거/참고 사항 |
|---|---|---|
MmMapIoSpace() |
MmMapIoSpaceEx() |
|
MmAllocateContiguousMemorySpecifyCache() |
MmAllocateContiguousNodeMemory() |
캐시 유형에 따라 SpecifyCache를 실행 불가능한 메모리로 제한하는 방식으로 사용할 수 있습니다. 그러나 NodeMemory를 사용하면 이를 보장할 수 있습니다. 이에 대한 자세한 내용은 C30030 하위 섹션 '캐시 유형과 관련된 결함' 을 참조하세요. |