Anotaciones de SAL 2.0 para controladores de Windows

El lenguaje de anotación de código fuente (SAL) de Microsoft incluye anotaciones específicas del análisis de controladores de Windows y el código kernel relacionado. El lenguaje de anotación proporciona una manera de describir las propiedades de las funciones, los parámetros, los valores devueltos, las estructuras y los campos de estructura. Las anotaciones son como comentarios que se agregan al código y se omiten mediante el compilador, pero las herramientas de análisis estáticos las usan. El uso de anotaciones ayuda a mejorar la eficacia del desarrollador, ayuda a mejorar la precisión de los resultados del análisis estático y permite a las herramientas determinar mejor si existe un error determinado. Las anotaciones del controlador no están pensadas para su uso en código no relacionado con el controlador o no relacionado con el kernel. Las anotaciones del controlador se definen en Driverspecs.h.

Nota Windows 8 presenta SAL 2.0, que reemplaza a SAL 1.0. Para obtener información sobre SAL 2.0, vea Usar anotaciones SAL para reducir defectos de código de C/C++. SAL 2.0 reemplaza a SAL 1.0. SAL 2.0 debe usarse con el Kit de controladores de Windows (WDK) 8 para Windows 8. Si necesitas información sobre SAL 1.0 para controladores, consulta la documentación que se incluye con WDK para Windows 7.

Anotaciones irQL

Use las anotaciones IRQL para especificar el intervalo de niveles irQL en los que se debe ejecutar una función. Las anotaciones irQL ayudan a la herramienta de análisis de código a encontrar errores con mayor precisión.

_IRQL_requires_max_(value)

_IRQL_requires_min_(value)

_IRQL_raises_(value)

_IRQL_requires_(value)

_IRQL_raises_(value)

_IRQL_saves_

_IRQL_restores_

_IRQL_saves_global_(kind, param)

_IRQL_restores_global_(kind, param)

_IRQL_always_function_min_(value)

_IRQL_always_function_max_(value)

_IRQL_requires_same_

_IRQL_is_cancel_ - Use la anotación _IRQL_is_cancel para ayudar a garantizar el comportamiento correcto de una función de devolución de llamada de DRIVER_CANCEL.

Anotaciones de punto flotante para controladores

_Kernel_float_saved_

_Kernel_float_restored_

_Kernel_float_used_

Use las anotaciones de punto flotante para los controladores para ayudar a la herramienta de análisis de código a detectar el uso de punto flotante en código en modo kernel y para notificar errores si el estado de punto flotante no está protegido correctamente.

anotación de DO_DEVICE_INITIALIZING

_Kernel_clear_do_init_

Use la anotación DO_DEVICE_INITIALIZING para especificar si se espera que la función anotada borre el bit de DO_DEVICE_INITIALIZING en el campo Marcas del objeto de dispositivo.

anotación de Kernel_IoGetDmaAdapter

_Kernel_IoGetDmaAdapter_

Use la anotación Kernel_IoGetDmaAdapter para dirigir las herramientas de análisis de código para buscar el uso incorrecto de los punteros DMA.

Anotaciones para operandos interbloqueados

_Interlocked_operand_

Use las anotaciones para operandos interbloqueados para los parámetros de función para identificarlos como operandos interbloqueados. Varias funciones toman como uno de sus parámetros la dirección de una variable a la que se debe tener acceso mediante una instrucción de procesador interbloqueada. Se trata de instrucciones atómicas de lectura en caché y, si los operandos se usan incorrectamente, se producen errores muy sutiles.

Anotaciones para rutinas de distribución de controladores

_Dispatch_type_

Use las anotaciones para las rutinas de distribución del controlador al declarar rutinas de distribución del controlador WDM. Para obtener más información, consulte Declaración de funciones mediante tipos de rol de función para controladores WDM y anotación de rutinas de distribución de controladores.

Minifiltro del sistema de archivos: devolución de llamada de operación previa _Flt_CompletionContext_Outptr_ anotación

_Flt_CompletionContext_Outptr_

Use la devolución de llamada de minifiltro del sistema de archivos _Flt_CompletionContext_Outptr_ anotación al declarar funciones de devolución de llamada de minifiltro del sistema de archivos PFLT_PRE_OPERATION_CALLBACK.

Coloque esta anotación en el parámetro CompletionContext. Esta anotación dirige a la herramienta de análisis de código para comprobar que CompletionContext es correcto para el valor devuelto FLT_PREOP_CALLBACK_STATUS.

Consulte también

Utilizar anotaciones SAL para reducir defectos de código de C/C++