примечания SAL 2,0 для драйверов Windows
язык аннотирования Microsoft Source Code (SAL) включает заметки, характерные для анализа Windows драйверов и соответствующего кода ядра. Язык аннотации предоставляет способ описания свойств функций, параметров, возвращаемых значений, структур и полей структуры. Заметки подобны комментариям, которые добавляются в код и игнорируются компилятором, но используются средствами статического анализа. Использование заметок помогает улучшить эффективность разработки, помогает повысить точность результатов статического анализа и позволяет средствам лучше определить, существует ли конкретная ошибка. Заметки драйверов не предназначены для использования в коде, отличном от драйвера или не относящемся к ядру. Заметки драйверов определены в Дриверспекс. 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_requires_max(значение) IRQL_requires_min(значение) IRQL_raises(значение) IRQL_requires(значение) IRQL_raises(значение) IRQL_saves IRQL_restores IRQL_saves_global(тип, параметр) IRQL_restores_global(тип, параметр) IRQL_always_function_min(значение) IRQL_always_function_max(значение) IRQL_requires_same |
Аннотации IRQL | Используйте аннотации IRQL, чтобы указать диапазон уровней IRQL, на котором должна выполняться функция. Аннотации IRQL помогают средству анализа кода более точно находить ошибки. |
IRQL_is_cancel | Аннотации IRQL | Используйте IRQL_is_cancel аннотации, чтобы обеспечить правильное поведение функции обратного вызова DRIVER_CANCEL . |
Kernel_float_saved Kernel_float_restored Kernel_float_used |
Заметки с плавающей запятой для драйверов | Используйте заметки с плавающей запятой, чтобы средство анализа кода определяло использование плавающей точки в коде режима ядра и сообщать об ошибках, если состояние с плавающей запятой не защищено надлежащим образом. |
Kernel_clear_do_init |
DO_DEVICE_INITIALIZING Аннотация | Используйте заметку Kernel_clear_do_init , чтобы указать, должна ли функция с заметками очищать DO_DEVICE_INITIALIZING бит в поле Flags объекта Device. |
Kernel_IoGetDmaAdapter |
Kernel_IoGetDmaAdapter Заметки | Используйте заметку Kernel_IoGetDmaAdapter , чтобы направить средства анализа кода на неправильное использование указателей DMA. |
Interlocked_operand |
Заметки для блокируемых операндов | Используйте Interlocked_operand аннотацию для параметров функции, чтобы указать их как блокируемые операнды. Ряд функций принимает в качестве одного из своих параметров адрес переменной, доступ к которой должен осуществляться с помощью блокируемой инструкции процессора. Это атомарные инструкции по чтению кэша, и если операнды используются неверно, это приведет к незаметному результату ошибок. |
Dispatch_type |
Заметки для подпрограмм диспетчеризации драйвера. | Используйте Dispatch_type аннотацию, используемую при объявлении подпрограмм ДИСПЕТЧЕРИЗАЦИИ драйвера WDM. См. статью объявление функций с помощью типов ролей функций для драйверов WDM и Добавление заметок к подсистемам диспетчеризации драйверов. |
Flt_CompletionContext_Outptr |
Flt_CompletionContext_Outptr Заметки | Используйте заметку Flt_CompletionContext_Outptr при объявлении функций обратного вызова предварительной операции минифильтра файловой системы (PFLT_PRE_OPERATION_CALLBACK). Поместите эту заметку в параметре " контекст завершения". Эта заметка направляет средство анализа кода, чтобы проверить правильность завершения для FLT_PREOP_CALLBACK_STATUS возвращаемого значения. |
Связанные темы
Использование аннотаций SAL для сокращения количества дефектов в коде C/C++