C30029
Advertencia: Llamada a una función de asignación de memoria que solicita memoria ejecutable
Esta advertencia indica que se está usando una función que se ha prohibido y tiene un reemplazo más sólido o seguro. Este error específico indica el uso de una API que asigna solo un grupo no paginado ejecutable.
Comentarios
Esto solo debe usarse si se requiere memoria ejecutable. Consulte Grupo no paginado no ejecutado (NX) para obtener más información sobre esto. No hay parámetros que pueda proporcionar que cambien este comportamiento. La única manera de corregir este problema es usar una función alternativa que permita la asignación de memoria del grupo no paginado no ejecutable. Una lista de todas las funciones prohibidas cubiertas por este error y los reemplazos recomendados se pueden encontrar después del ejemplo siguiente.
Nombre del análisis de código: BANNED_MEM_ALLOCATION_NOTYPE
Ejemplo
El código siguiente genera esta advertencia. Este problema se deriva del uso de MmMapIoSpace
:
MmMapIoSpace(PhysicalAddress, numberOfBytes, MmNonCached);
El código siguiente evita esta advertencia reemplazando MmMapIoSpace
por MmMapIoSpace
:
MmMapIoSpaceEx(PhysicalAddress, numberOfBytes, PAGE_NOCACHE | PAGE_READWRITE);
Funciones prohibidas
API prohibida | Reemplazos | Racionalización/Notas |
---|---|---|
MmMapIoSpace() |
MmMapIoSpaceEx() |
|
MmAllocateContiguousMemorySpecifyCache() |
MmAllocateContiguousNodeMemory() |
En función del tipo de caché, SpecifyCache se puede usar de forma que lo limite a la memoria no ejecutable. Sin embargo, el uso de NodeMemory garantizará esto. Consulte C30030, subsección "Para ver defectos relacionados con tipos de caché" para obtener más información sobre esto. |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de