Windows 드라이버에 대한 SAL 2.0 주석

Microsoft SAL(Source Code Annotation Language)에는 Windows 드라이버 및 관련 커널 코드의 분석과 관련된 주석이 포함되어 있습니다. 주석 언어는 함수, 매개 변수, 반환 값, 구조 및 구조 필드의 속성을 설명하는 방법을 제공합니다. 주석은 코드에 추가하는 설명과 같으며, 컴파일러에서는 무시되고 정적 분석 도구에서 사용됩니다. 주석을 사용하면 개발자 효율성과 정적 분석 결과의 정확성을 높일 수 있으며, 특정 버그의 존재 여부를 도구에서 더 잘 확인할 수 있습니다. 드라이버 주석은 비 드라이버 또는 비 커널 관련 코드에서 사용하기 위한 것이 아닙니다. 드라이버 주석은 Driverspecs.h에서 정의됩니다.

참고  Windows 8에는 SAL 1.0 대신 SAL 2.0이 포함됩니다. SAL 2.0에 대한 자세한 내용은 SAL 주석을 사용하여 C/C++ 코드 결함 줄이기를 참조하세요. SAL 2.0은 SAL 1.0을 대체합니다. SAL 2.0은 Windows 8용 WDK(Windows 드라이버 키트) 8과 함께 사용해야 합니다. 드라이버용 SAL 1.0에 대한 정보가 필요하면 Windows 7용 WDK와 함께 제공되는 설명서를 참조하세요.

드라이버 주석범주사용

_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 주석

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 주석

주석이 달린 함수가 장치 개체의 플래그 필드에서 DO_DEVICE_INITIALIZING 비트를 지워야 하는지 여부를 지정하려면 _Kernel_clear_do_init_ 주석을 사용합니다.

_Kernel_IoGetDmaAdapter_

_Kernel_IoGetDmaAdapter_ 주석

_Kernel_IoGetDmaAdapter_ 주석을 사용하여 코드 분석 도구가 DMA 포인터의 잘못된 사용을 검색하게 합니다.

_Interlocked_operand_

연동된 피연산자에 대한 주석

함수 매개 변수에 _Interlocked_operand_ 주석을 사용하여 함수를 연동된 피연산자로 식별합니다. 많은 함수는 연동된 프로세서 명령을 사용하여 액세스해야 하는 변수 주소를 매개 변수 중 하나로 사용합니다. 이들 함수는 캐시 read-through 원자성 명령이며 피연산자를 잘못 사용할 경우 매우 미세한 버그가 발생합니다.

_Dispatch_type_

드라이버 디스패치 루틴에 대한 주석.

WDM 드라이버 디스패치 루틴을 선언할 때 사용된 _Dispatch_type_ 주석을 사용합니다. WDM 드라이버용 함수 역할 유형을 사용하여 함수 선언드라이버 디스패치 루틴에 주석 달기를 참조하세요.

_Flt_CompletionContext_Outptr_

_Flt_CompletionContext_Outptr_ Annotation

파일 시스템 미니필터 사전 작업 콜백 함수(PFLT_PRE_OPERATION_CALLBACK)를 선언할 때 _Flt_CompletionContext_Outptr_ 주석을 사용합니다. 이 주석을 CompletionContext 매개 변수에 배치합니다. 이 주석은 코드 분석 도구에서 CompletionContext가 FLT_PREOP_CALLBACK_STATUS 반환 값에 대해 올바른지 확인하도록 지정합니다.

 

관련 항목

SAL 주석을 사용하여 Reduce C/C++ 코드 결함 줄이기

 

 

표시:
© 2014 Microsoft