Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.