Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Язык заметки исходного кода Майкрософт (SAL) включает заметки, относящиеся к анализу драйверов Windows и связанного кода ядра. Язык заметок предоставляет способ описания свойств функций, параметров, возвращаемых значений, структур и полей структуры. Заметки похожи на комментарии, которые добавляются в код и игнорируются компилятором, но используются статическими средствами анализа. Использование заметок помогает повысить эффективность разработчика, повысить точность результатов статического анализа и лучше определить, существует ли конкретная ошибка. Заметки драйвера не предназначены для использования в коде, отличном от драйвера или не связанного с ядром. Аннотации драйвера определяются в Driverspecs.h.
Заметка Windows 8 представляет SAL 2.0, который заменяет SAL 1.0. Дополнительные сведения о SAL 2.0 см. в статье "Использование заметок SAL для уменьшения дефектов кода C/C++". SAL 2.0 заменяет SAL 1.0. SAL 2.0 следует использовать с комплектом драйверов Windows (WDK) 8 для Windows 8. Если вам нужна информация о SAL 1.0 для драйверов, см. документацию, которая поставляется с WDK для Windows 7.
Заметки IRQL
Используйте заметки IRQL , чтобы указать диапазон уровней IRQL, с которым должна выполняться функция. Заметки IRQL помогают средству анализа кода более точно находить ошибки.
_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_ — Используйте аннотацию _IRQL_is_cancel для обеспечения корректной работы функции обратного вызова DRIVER_CANCEL.
Заметки с плавающей запятой для драйверов
_Kernel_float_saved_
_Kernel_float_restored_
_Kernel_float_used_
Используйте заметки с плавающей запятой для драйверов, чтобы помочь средству анализа кода определить использование с плавающей запятой в коде режима ядра и сообщить об ошибках, если состояние с плавающей запятой неправильно защищено.
аннотация DO_DEVICE_INITIALIZING
_Kernel_clear_do_init_
Используйте аннотацию DO_DEVICE_INITIALIZING, чтобы указать, должна ли аннотированная функция очистить бит DO_DEVICE_INITIALIZING в поле Flags объекта устройства.
заметка Kernel_IoGetDmaAdapter
_Kernel_IoGetDmaAdapter_
Используйте аннотацию Kernel_IoGetDmaAdapter для направления инструментов анализа кода для поиска неправильного использования указателей DMA.
Заметки для интерблокируемых операндов
_Interlocked_operand_
Используйте аннотации для интерблокируемых операндов для параметров функции, чтобы идентифицировать их как интерблокируемые операнды. Ряд функций принимает в качестве параметра адрес переменной, к которой следует получить доступ с помощью инструкции с блокировкой процессора. Это атомарные инструкции с прямым чтением из кэша, и если операнды используются неправильно, возникают очень тонкие ошибки.
Аннотации для процедур вызова драйверов
_Dispatch_type_
Используйте аннотации для диспетчерских подпрограмм драйверов при объявлении диспетчерских подпрограмм WDM драйверов. Дополнительные сведения см. в разделе Объявление функций с использованием типов ролей функций для драйверов WDM и Аннотирование подпрограмм диспетчеров драйверов.
Аннотация обратного вызова предварительной операции файловой системы Minifilter _Flt_CompletionContext_Outptr_
_Flt_CompletionContext_Outptr_
Используйте аннотацию _Flt_CompletionContext_Outptr_ для предварительного обратного вызова файловой системы при объявлении функций предварительной операции фильтра файловой системы PFLT_PRE_OPERATION_CALLBACK.
Поместите эту заметку в параметр CompletionContext. Эта аннотация направляет инструмент анализа кода на проверку правильности CompletionContext для возвращаемого значения FLT_PREOP_CALLBACK_STATUS.
См. также
Использование аннотаций SAL для уменьшения количества дефектов в коде C/C++