Partilhar via


Anotações SAL 2.0 para drivers do Windows

A Microsoft Source Code Annotation Language (SAL) inclui anotações que são específicas para a análise de drivers do Windows e o código do kernel relacionado. A linguagem de anotação fornece uma maneira de descrever propriedades de funções, parâmetros, valores de retorno, estruturas e campos de estrutura. As anotações são como comentários que você adiciona ao seu código e são ignoradas pelo compilador, mas são usadas pelas ferramentas de análise estática. O uso de anotações ajuda a melhorar a eficácia do desenvolvedor, ajuda a melhorar a precisão dos resultados da análise estática e permite que as ferramentas determinem melhor se um bug específico existe. As anotações de driver não se destinam ao uso em código não relacionado ao driver ou ao kernel. As anotações de driver são definidas em Driverspecs.h.

Observação O Windows 8 apresenta o SAL 2.0, que substitui o SAL 1.0. Para obter informações sobre SAL 2.0, consulte Usando anotações SAL para reduzir defeitos de código C/C++. O SAL 2.0 substitui o SAL 1.0. SAL 2.0 deve ser usado com o Windows Driver Kit (WDK) 8 para Windows 8. Se precisar de informações sobre a SAL 1.0 para drivers, consulte a documentação fornecida com o WDK para Windows 7.

Anotações IRQL

Utilize as anotações IRQL para especificar o intervalo de níveis de IRQL em que uma função deve ser executada. As anotações IRQL ajudam a ferramenta de análise de código a encontrar erros com mais precisão.

_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 a anotação _IRQL_is_cancel para ajudar a garantir o comportamento correto de uma função de retorno de chamada DRIVER_CANCEL.

Anotações de ponto flutuante para controladores

_Kernel_float_saved_

_Kernel_float_restored_

_Kernel_float_used_

Use as anotações de ponto flutuante para drivers para ajudar a ferramenta de análise de código a detetar o uso de ponto flutuante no código de modo kernel e relatar erros se o estado de ponto flutuante não estiver protegido corretamente.

DO_DEVICE_INITIALIZING Anotação

_Kernel_clear_do_init_

Use a anotação DO_DEVICE_INITIALIZING para especificar se a função anotada deve limpar o bit de DO_DEVICE_INITIALIZING no campo Flags do objeto de dispositivo.

Kernel_IoGetDmaAdapter anotação

_Kernel_IoGetDmaAdapter_

Use a anotação Kernel_IoGetDmaAdapter para direcionar as ferramentas de análise de código para detetar o uso indevido de ponteiros DMA.

Anotações sobre operandos intertravados

_Interlocked_operand_

Use as anotações para operandos intertravados nos parâmetros de função para identificá-los como operandos intertravados. Uma série de funções tomam como um de seus parâmetros o endereço de uma variável que deve ser acessada usando uma instrução de processador intertravado. Estas instruções atómicas são de leitura de cache e, se os operandos forem usados incorretamente, resultam em bugs muito subtis.

Anotações para rotinas de despacho de motoristas

_Dispatch_type_

Use as anotações para rotinas de despacho de drivers ao declarar rotinas de despacho de drivers WDM. Para obter mais informações, consulte Declarar funções usando tipos de função para drivers WDM e Anotar rotinas de despacho do driver.

Sistema de arquivos Minifiltro pré-operação retorno de chamada _Flt_CompletionContext_Outptr_ anotação

_Flt_CompletionContext_Outptr_

Use a anotação _Flt_CompletionContext_Outptr_ para o retorno de chamada de pré-operação do Minifiltro de Sistema de Arquivos ao declarar as funções de retorno de chamada de pré-operação do Minifiltro de Sistema de Arquivos PFLT_PRE_OPERATION_CALLBACK.

Coloque essa anotação no parâmetro CompletionContext. Esta anotação direciona a ferramenta de análise de código a verificar se o CompletionContext está correto para o valor de retorno FLT_PREOP_CALLBACK_STATUS.

Ver também

Usando anotações SAL para reduzir defeitos de código C/C++