Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
advertencia C28170: se ha declarado que la función está en un segmento paginado, pero no se encontró ni PAGED_CODE ni PAGED_CODE_LOCKED
La herramienta Análisis de código notifica este error cuando se usa #pragma alloc_text o #pragma code_seg para mover una función que no contiene una PAGED_CODE o PAGED_CODE_LOCKED macro en una sección de código paginable. Este error se notifica en el número de línea que corresponde a la primera llave ({) de la función.
La herramienta Análisis de código deduce que una sección se puede paginar cuando el nombre de la sección comienza por PAGE. Las funciones del código paginable deben contener una macro PAGED_CODE o PAGED_CODE_LOCKED al principio de la función entre la primera llave ({ ) y la primera instrucción condicional.
Estas macros permiten que la herramienta Análisis de código y un comprobador en tiempo de ejecución determinen si el código paginable se puede ejecutar en un IRQL con privilegios elevados. Si se produce un error de página mientras el sistema se ejecuta en un nivel elevado, el sistema se bloqueará.
Si las funciones de un segmento paginado se bloquean posteriormente en la memoria, use PAGED_CODE_LOCKED en lugar de PAGED_CODE. La macro PAGE_CODE_LOCKED permite al controlador realizar llamadas que generen IRQL sin encontrar una advertencia PREfast para controladores.
Esta condición suele ser muy difícil de encontrar durante las pruebas (a menos que la macro de PAGED_CODE se use para hacer que el Comprobador de controladores compruebe el error), ya que el código realmente debe paginarse para que se produzca el error de la página.
Ejemplo de
En el ejemplo de código siguiente se produce esta advertencia.
void func();
#pragma alloc_text("PAGED_CODE", func);
void func1()
{
// paged, no PAGED_CODE: error
}
En el ejemplo de código siguiente se evita esta advertencia.
void func();
#pragma alloc_text("PAGED_CODE", func);
void func2()
{
PAGED_CODE(); // includes PAGED_CODE macro
}