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, 하위 섹션 '캐시 유형과 관련된 결함의 경우' 를 참조하세요. |
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기