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