C30029

경고: 실행 가능한 메모리를 요청하는 메모리 할당 함수 호출

이 경고는 금지되었으며 보다 강력하거나 안전한 대체 기능을 사용하는 함수를 사용하고 있음을 나타냅니다. 이 특정 오류는 실행 가능한 비페이지 풀만 할당하는 API의 사용을 나타냅니다.

설명

실행 가능한 메모리가 필요한 경우에만 사용해야 합니다. 이에 대한 자세한 내용은 NX(실행 안 됨) 비페이지 풀 을 참조하세요. 이 동작을 변경하는 매개 변수를 제공할 수 없습니다. 이 문제를 해결하는 유일한 방법은 실행 불가능한 비페이징 풀 메모리를 할당할 수 있는 대체 함수를 사용하는 것입니다. 이 오류가 적용되는 모든 금지된 함수 목록과 권장되는 대체 함수는 다음 예제 다음에 찾을 수 있습니다.

코드 분석 이름: BANNED_MEM_ALLOCATION_NOTYPE

예제

다음 코드는 이 경고를 생성합니다. 이 문제는 의 사용에서 비롯됩니다 MmMapIoSpace.

MmMapIoSpace(PhysicalAddress, numberOfBytes, MmNonCached);

다음 코드는 를 로 바꿔 이 경고를 방지합니다.MmMapIoSpaceMmMapIoSpace

MmMapIoSpaceEx(PhysicalAddress, numberOfBytes, PAGE_NOCACHE | PAGE_READWRITE);

금지된 함수

금지된 API 교체(s) 근거/참고 사항
MmMapIoSpace() MmMapIoSpaceEx()
MmAllocateContiguousMemorySpecifyCache() MmAllocateContiguousNodeMemory() 캐시 유형에 따라 SpecifyCache를 실행 불가능한 메모리로 제한하는 방식으로 사용할 수 있습니다. 그러나 NodeMemory를 사용하면 이를 보장할 수 있습니다. 이에 대한 자세한 내용은 C30030, 하위 섹션 '캐시 유형과 관련된 결함의 경우' 를 참조하세요.