Comparteix via


Anotaciones 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 funciones, parámetros, valores devueltos, estructuras y campos de estructura. Las anotaciones son como los comentarios que agrega al código y el compilador omite, pero las herramientas de análisis estático 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 diseñadas para su uso en código no relacionado con el controlador o el no 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 Uso de 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_ - Utiliza la anotación _IRQL_is_cancel para garantizar el comportamiento correcto de una función de devolución de llamada DRIVER_CANCEL.

Anotaciones de punto flotante para controladores

_Kernel_float_saved_

_Kernel_float_restored_

_Kernel_float_used_

Use las anotaciones de punto flotante para 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 DO_DEVICE_INITIALIZING en el campo Flags del objeto de dispositivo.

anotación de Kernel_IoGetDmaAdapter

_Kernel_IoGetDmaAdapter_

Utilice la anotación Kernel_IoGetDmaAdapter para guiar a las herramientas de análisis de código en la búsqueda de usos incorrectos 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 a través de 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.

Devolución de llamada pre-operativa de minifiltro del sistema de archivos, anotación _Flt_CompletionContext_Outptr_

_Flt_CompletionContext_Outptr_

Utilice la anotación _Flt_CompletionContext_Outptr_ para la devolución de llamada de preoperación del minifiltro del sistema de archivos al declarar las funciones de devolución de llamada de preoperación del minifiltro del sistema de archivos PFLT_PRE_OPERATION_CALLBACK.

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

Consulte también

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